Compartilhar via


Erro do compilador C2975

'argument' : argumento de modelo inválido para 'type', expressão de constante de tempo de compilação esperada

O argumento de modelo não corresponde à declaração de modelo; uma expressão de constante deve aparecer dentro dos colchetes angulares. Variáveis não são permitidas como argumentos reais de modelo. Verifique a definição do modelo para localizar os tipos corretos.

Exemplo

A amostra a seguir gera o erro C2975 e também mostra o uso correto:

// C2975.cpp
template<int I>
class X {};

int main() {
   int i = 4, j = 2;
   X<i + j> x1;   // C2975
   X<6> x2;   // OK
}

O erro C2975 também ocorre quando você usa __LINE__ como uma constante de tempo de compilação com /ZI. Uma solução seria compilar com /Zi em vez de /ZI.

// C2975b.cpp
// compile with: /ZI
// processor: x86
template<long line>
void test(void) {}

int main() {
   test<__LINE__>();   // C2975
}