http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56421
--- Comment #7 from Daniel Krügler <daniel.kruegler at googlemail dot com> 2013-02-22 22:01:18 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. After a cross-check with the core language group I completely agree with Jonathan and exactly because of the paragraphs he quoted. Further-on, the example is ill-formed, but no diagnostics required, as of [temp.inst]p6: "If the overload resolution process can determine the correct function to call without instantiating a class template definition, it is unspecified whether that instantiation actually takes place." This sentence explains the implementation divergence (Thanks to Richard Smith for reminding me to this part).