“non valide utilisation incomplète de type” erreur partielle de la spécialisation de modèle

Le code suivant:

template <typename S, typename T>
struct foo {
   void bar();
};

template <typename T>
void foo <int, T>::bar() {
}

me donne l'erreur

invalid use of incomplete type 'struct foo<int, T>'
declaration of 'struct foo<int, T>'

(Je suis en utilisant gcc.) Est ma syntaxe pour une partie de la spécialisation de mal? Notez que si je supprime le deuxième argument:

template <typename S>
struct foo {
   void bar();
};

template <>
void foo <int>::bar() {
}

puis il compile correctement.

InformationsquelleAutor Jesse Beder | 2008-10-02