C++ language change: assuming 'declaration' is an explicit specialization of a function template
The compiler assumes that the definition of a non-template function is an explicit specialization of the function template. For example:
template<class T> void f(T) {};
void f(int) {}; // assumes the user means
// template<> void f(int);
This code generates this compiler warning.