Condividi tramite


Errore del compilatore C2970

'class': parametro di modello 'param': 'arg': un'espressione che include oggetti con collegamento interno non può essere usata come argomento non di tipo

Non è possibile usare il nome o l'indirizzo di una variabile statica come argomento modello. La classe modello prevede un valore const che può essere valutato in fase di compilazione.

L'esempio seguente genera l'errore 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;