Как мне исправить эту синтаксическую ошибку?
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; b.g (); }
U является зависимым типом, поэтому необходимо указать, что f является членом шаблона:
U
f
U::template f<C>();
Это по-прежнему недействительно, если U равно A, так как f не является static членом A.
A
static