// Build don't link: template class mem_fun1_t { public: mem_fun1_t(S (T::*pf)(double)) {} }; template class mem_fun1_t { public: mem_fun1_t(void (T::*pf)(double)) {} }; struct Operation { double eval(double) { return 0; } }; int main() { mem_fun1_t m(&Operation::eval); }