Partager via


Erreur du compilateur C2970

'class' : paramètre de modèle 'param' : 'arg' : une expression impliquant des objets avec liaison interne ne peut pas être utilisée comme argument non type

Vous ne pouvez pas utiliser le nom ou l’adresse d’une variable statique comme argument de modèle. La classe de modèle attend une valeur const qui peut être évaluée au moment de la compilation.

L’exemple suivant génère l’erreur 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;