http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53573
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Severity|major |normal --- Comment #9 from Jonathan Wakely <redi at gcc dot gnu.org> 2012-06-05 10:54:36 UTC --- (In reply to comment #2) > The function called in the template definition is clearly dependent on the > template parameter 'T' and therefore itsname should be resolved at the point > of > instantiation where 'g' is clearly defined and in scope (and is not local). > The > error message says: "no declarations were found by argument-dependent lookup > at > the point of instantiation" when 'g' should be found. Built-in types have no associated namespaces so ADL can not find 'g' via ADL. A declaration must be visible at the point of definition. The example in comment 1 is ill-formed. Paragraph 10 doesn't apply because the call is clearly dependent. N.B. N3242 is not the C++ standard and neither is "C++ Special Edition" which is quite old now.