2010-09-01 67 views
3

如何解决此语法错误?C++模板语法

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(); 
} 

回答

9

U是一个依赖型,所以你需要指定f是一个模板成员:

U::template f<C>(); 

这仍然是无效的,当UA,不过,因为f不是一个static成员A

+0

谢谢。我不知道这种语法。 – Thomas 2010-09-01 20:43:58