struct Dummy {
  static Dummy DUMMYvoid(void) { return Dummy(); }

  typedef Dummy (*voidCreator)(void);
  template <voidCreator> void get() const;      //17
  template<> void get<&DUMMYvoid>() const {}

  static Dummy DUMMYint(int) { return Dummy(); }
 
  typedef Dummy (*intCreator)(int);
  template <intCreator> int get() const;
  template<> int get<&DUMMYint>() const { return 0; }      //24
};


int main()
{
  auto di = Dummy::DUMMYint(10);  
  auto x = Dummy().get<Dummy::DUMMYint>(); //line 46
}