Erreur du compilateur C2975
'argument' : argument de modèle non valide pour 'type', expression constante de compilation attendue
L’argument de modèle ne correspond pas à la déclaration de modèle ; une expression constante doit apparaître entre crochets d’angle. Les variables ne sont pas autorisées en tant qu’arguments réels de modèle. Vérifiez la définition du modèle pour trouver les types corrects.
Exemple
L’exemple suivant génère l’erreur C2975 et affiche également l’utilisation correcte :
// C2975.cpp
template<int I>
class X {};
int main() {
int i = 4, j = 2;
X<i + j> x1; // C2975
X<6> x2; // OK
}
C2975 se produit également lorsque vous utilisez __LINE__
comme constante au moment de la compilation avec /ZI
. Une solution consisterait à compiler avec /Zi
au lieu de /ZI
.
// C2975b.cpp
// compile with: /ZI
// processor: x86
template<long line>
void test(void) {}
int main() {
test<__LINE__>(); // C2975
}