In each case where a candidate is a function template, candidate
function template specializations
are generated using template argument deduction (
[temp.over],
[temp.deduct])
. If a constructor template or conversion function template
has an
explicit-specifier
whose
constant-expression is value-dependent (
[temp.dep]),
template argument deduction is performed first and then,
if the context admits only candidates that
are not explicit and the generated specialization is explicit (
[dcl.fct.spec]),
it will be removed from the candidate set
. Those candidates are then handled as candidate
functions in the usual way
.
A given name can refer to, or a conversion can consider,
one or more function templates as well as a set of non-template functions
. In such a case, the
candidate functions generated from each function template are combined
with the set of non-template candidate functions
.