1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
// { dg-do assemble } template <class S, class T> class mem_fun1_t { public: mem_fun1_t(S (T::*pf)(double)) {} }; template <class T> class mem_fun1_t<void, T> { public: mem_fun1_t(void (T::*pf)(double)) {} }; struct Operation { double eval(double) { return 0; } }; int main() { mem_fun1_t<double, Operation> m(&Operation::eval); }