A function template can be overloaded with other function templates
and with non-template functions ([dcl.fct]).
A non-template function is not
related to a function template
(i.e., it is never considered to be a specialization),
even if it has the same name and type
as a potentially generated function template specialization.139
That is,
declarations of non-template functions do not merely guide
overload resolution of
function template specializations
with the same name.
If such a non-template function is odr-used ([basic.def.odr]) in a program, it must be defined;
it will not be implicitly instantiated using the function template definition.