Teilen über


Compilerfehler C2970

'class' : template parameter 'param' : 'arg' : ein Ausdruck, der Objekte mit interner Verknüpfung enthält, kann nicht als Argument verwendet werden, das nicht vom Typ ist.

Bemerkungen

Sie können den Namen oder die Adresse einer statischen Variablen nicht als Vorlagenargument verwenden. Die Vorlagenklasse erwartet einen Konstantenwert, der zur Kompilierungszeit ausgewertet werden kann.

Example

Im folgenden Beispiel wird C2970 generiert:

// 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;