Errore del compilatore C2975
'argument': argomento di modello non valido per 'type', espressione costante in fase di compilazione prevista
L'argomento modello non corrisponde alla dichiarazione del modello; Un'espressione costante deve essere visualizzata tra parentesi angolari. Le variabili non sono consentite come argomenti effettivi del modello. Controllare la definizione di modello per individuare i tipi corretti.
Esempio
L'esempio seguente genera l'errore C2975 e mostra anche l'utilizzo corretto:
// C2975.cpp
template<int I>
class X {};
int main() {
int i = 4, j = 2;
X<i + j> x1; // C2975
X<6> x2; // OK
}
C2975 si verifica anche quando si usa __LINE__
come costante in fase di compilazione con /ZI
. Una soluzione consiste nel compilare con /Zi
invece di /ZI
.
// C2975b.cpp
// compile with: /ZI
// processor: x86
template<long line>
void test(void) {}
int main() {
test<__LINE__>(); // C2975
}