Error del compilador C2975
"argument": argumento de plantilla no válido para "type"; se esperaba una expresión constante en tiempo de compilación
El argumento de plantilla no coincide con la declaración de plantilla; una expresión constante debe aparecer entre corchetes angulares. No se permiten variables como argumentos reales de plantilla. Compruebe la definición de plantilla para encontrar los tipos correctos.
Ejemplo
En el ejemplo siguiente se genera el error C2975 y también se muestra el uso correcto:
// C2975.cpp
template<int I>
class X {};
int main() {
int i = 4, j = 2;
X<i + j> x1; // C2975
X<6> x2; // OK
}
El error C2975 también se produce cuando se usa __LINE__
como constante en tiempo de compilación con /ZI
. Una solución sería compilar con /Zi
en lugar de /ZI
.
// C2975b.cpp
// compile with: /ZI
// processor: x86
template<long line>
void test(void) {}
int main() {
test<__LINE__>(); // C2975
}