1 // PR c++/56247 2 3 struct Base { methodBase4 void method() {} 5 }; 6 7 typedef void (Base::*MemPtr)(); 8 9 // Template with a member function pointer "non-type parameter". 10 template<MemPtr func> 11 struct Wrapper {}; 12 13 template<class C> 14 struct Child : public Base { 15 // Templated derived class instantiates the Wrapper with the same parameter 16 // in two different virtual methods. fooChild17 void foo() { typedef Wrapper<&Base::method> W; } barChild18 void bar() { typedef Wrapper<&Base::method> W; } 19 }; 20 21 // Instantiate Child with some type. 22 template class Child<int>; 23