Erro do compilador C2971

'class': parâmetro de modelo 'param': 'arg': uma variável local não pode ser usada como um argumento de não tipo

Não é possível usar o nome ou o endereço de uma variável local como um argumento de modelo.

O exemplo a seguir gera C2971:

// C2971.cpp
template <int *pi>
class Y {};

int global_var = 0;

int main() {
   int local_var = 0;
   Y<&local_var> aY;   // C2971
   // try the following line instead
   // Y<&global_var> aY;
}