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.
Example
template<class T> void f(T) {}; void f(int) {}; // assumes the user means // template<> void f(int);