cpp/language/variable template

A variable template defines a family of variables or static data members.

Explanation
A variable instantiated from a variable template is called an instantiated variable. A static data member instantiated from a static data member template is called an instantiated static data member.

A variable template may be introduced by a template declaration at namespace scope, where declares a variable.

When used at class scope, variable template declares a static data member template.

As with other, a definition of a static data member template may be required. Such definition is provided outside the class definition. A template declaration of a static data member at namespace scope may also be a definition of a non-template :

Unless a variable template was or explicitly instantiated, it is implicitly instantiated when a specialization of the variable template is referenced in a context that requires  or if the existence of the definition affects the semantics of the program, i.e. if the variable is  by an expression (the definition may be not used).

The existence of a definition of a variable is considered to affect the semantics of the program if the variable is needed for constant evaluation by an expression, even if constant evaluation of the expression is not required or if constant expression evaluation does not use the definition.