Compartir a través de


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
}