Error del compilador C2970
"clase": parámetro de plantilla "parámetro": "argumento": no se puede usar una expresión que requiere objetos con vinculación interna como argumento sin tipo definido
No puede usar el nombre o la dirección de una variable local como argumento de plantilla. La clase de plantilla espera un valor const que se pueda evaluar en tiempo de compilación.
El ejemplo siguiente genera el error 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;