On 5 March 2011 16:17, Edward Diener wrote: > > template<class T> struct ATemplate { }; The template parameter T must be a type. > template<class T> void check(ATemplate<&T::SomeFuncTemplate<int> > *); &T::SomeFuncTemplate<int> is an expression taking the address of a member, it is not a type.