Partilhar via


Erro de compilador C2970

'classe' : parâmetro de modelo 'param' : 'arg' : uma expressão envolvendo objetos com ligação interna não pode ser usada como um argumento de não-tipo

Observações

Não é possível usar o nome ou endereço de uma variável estática como um argumento de modelo. A classe template espera um valor const que pode ser avaliado em tempo de compilação.

Example

O exemplo a seguir gera C2970:

// C2970.cpp
// compile with: /c
static int si;
// could declare nonstatic to resolve all errors
// int si;

template <int i>
class X {};

template <int *pi>
class Y {};

X<si> anX;   // C2970 cannot use static variable in templates

// this would also work
const int i = 10;
X<i> anX2;