template<typename A, typename T> struct a { void f(T* p); }; template<typename A, typename T> void a<A, T>::f(T* p) { } a<int, char const> A; A.f("aaa");