When a call of a function or function template
is written (explicitly, or implicitly using the
operator notation), template argument deduction (
[temp.deduct])
and checking of any explicit template arguments (
[temp.arg]) are performed
for each function template to find the template argument values (if any) that
can be used with that function template to instantiate a function template
specialization that can be invoked with the call arguments or,
for conversion function templates, that can convert to the required type
.