How to fix this syntax error?
struct A { template < typename T > void f () {} }; template < typename C, typename U > struct B { void g () { U::f < C > (); // expected primary-expression before ยป>ยซ token } }; int main () { B<int,A> b; bg (); }
U is a dependent type, so you need to indicate that f is a member of the template:
U
f
U::template f<C>();
This is still not valid if U is A , although f not a static member of A
A
static