Pointer-to-member as template parameter deduction
问题 I want to get pointer-to-member as template parameter to the foo1. Here is code: struct baz{ int qux; }; template<typename C, typename T, T C::*m> struct foo1{}; template<typename C, typename T> void barr2(T C::*m){ } template<typename C, typename T> void barr1(T C::*m){ barr2(m); // ok foo1<C, T, &baz::qux> _; // ok foo1<C, T, m> f; // g++4.6.1 error here; how to pass 'm' correctly ? } int main(){ barr1(&baz::qux); } So how it should look like? 回答1: It doesn't work for you because you are