http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56421

--- Comment #5 from Kristian Spangsege <kristian.spangsege at gmail dot com> 
2013-02-22 18:04:41 UTC ---
(In reply to comment #4)
> I think 13.3 [over.match] ¶2 and 13.3.1 [over.match.funcs] ¶7  say the 
> function
> template specialization must be generated before the number of arguments is
> checked to see if the candidate function is viable.

Not so.

Function templates must not be instantiated unless the number of arguments
match.

[C++11: 13.3/2]:

- First, a subset of the candidate functions (those that have the proper number
of arguments and meet certain other conditions) is selected to form a set of
viable functions (13.3.2).

- Then the best viable function is selected based on the implicit conversion
sequences (13.3.3.1) needed to match each argument to the corresponding
parameter of each viable function.

[C++11: 13.3.1/7]:

In each case where a candidate is a function template, candidate function
template specializations are generated using template argument deduction
(14.8.3, 14.8.2). Those candidates are then handled as candidate functions in
the usual way.

Reply via email to