2010-09-01 66 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