c++,language-lawyer,c++14,template-specialization,variable-templates
Template arguments can only be omitted in explicit specialisation of function templates. You have a variable template, so you have to include the <int>: template<> int a<int> = 1; Quoting C++14 (n4140), 14.7.3/10 (emphasis mine): A trailing template-argument can be left unspecified in the template-id naming an explicit function template...
c++,c++14,template-specialization,variable-templates
There is a reasonable consensus that variable template specializations are permitted to alter the type of the variable template: C++1y/C++14: Variable Template Specialization? The behavior of gcc is particularly interesting if the default type of Value is changed to a type with a function method: struct Unknown{ void function() const...