We recommend using Visual Studio 2017

Compiler Error C2971


The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.

The latest version of this topic can be found at Compiler Error C2971.

class' : template parameter 'param' : 'arg' : a local variable cannot be used as a non-type argument

You cannot use the name or address of a local variable as a template argument.

The following sample generates 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;