Erreur du compilateur C3855
'class' : le paramètre de type 'param' n’est pas compatible avec la déclaration
Le compilateur a trouvé un modèle non type ou des paramètres génériques avec des noms différents. Cela peut se produire lorsqu’un paramètre de modèle spécifié dans la définition d’une spécialisation de modèle n’est pas compatible avec sa déclaration.
L’exemple suivant génère l’erreur C3855 :
// C3855.cpp
template <int N>
struct C {
void f();
};
template <char N>
void C<N>::f() {} // C3855
Résolution possible :
// C3855b.cpp
// compile with: /c
template <int N>
struct C {
void f();
};
template <int N>
void C<N>::f() {}
C3855 peut également se produire lors de l’utilisation de génériques :
// C3855c.cpp
// compile with: /clr
generic <class T>
ref struct GC1 {
generic <class U>
ref struct GC2;
};
generic <class T>
generic <class U>
generic <class V>
ref struct GC1<T>::GC2 { }; // C3855
Résolution possible :
// C3855d.cpp
// compile with: /clr /c
generic <class T>
ref struct GC1 {
generic <class U>
ref struct GC2;
};
generic <class T>
generic <class U>
ref struct GC1<T>::GC2 { };