Kompilatorfel C2970

"class" : mallparametern "param" : "arg" : ett uttryck som involverar objekt med intern länkning kan inte användas som ett argument som inte är av typen

Anmärkningar

Du kan inte använda namnet eller adressen för en statisk variabel som ett mallargument. Mallklassen förväntar sig ett const-värde som kan utvärderas vid kompileringstillfället.

Example

I följande exempel genereras 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;