2010-09-01 7 views
3

Comment réparer cette erreur de syntaxe?Syntaxe du modèle 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(); 
} 

Répondre

9

U est un type dépendant si vous avez besoin de préciser que f est membre de modèle:

U::template f<C>(); 

Ceci est encore invalide lorsque U est A, bien que, comme f est pas membre static de A.

+0

Merci. Je ne connaissais pas cette syntaxe. – Thomas