This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21 Core Issues List revision 119a. See http://www.open-std.org/jtc1/sc22/wg21/ for the official list.
2025-12-20
[Voted into the WP at the February, 2012 meeting;moved to DR at the October, 2012 meeting.]
The Standard does not appear to specify what happens for code like thefollowing:
namespace one { template<typename T> void fun(T); } using one::fun; template<typename T> void fun(T);9.10 [namespace.udecl] paragraph 13 does not appear to applybecause it deals only with functions, not function templates:
If a function declaration in namespace scope or block scope has thesame name and the same parameter types as a function introduced by ausing-declaration, and the declarations do not declare the samefunction, the program is ill-formed.
John Spicer: For function templates I believe the ruleshould be that if they have the same function type (parameter typesand return type) and have identical template parameter lists, theprogram is ill-formed.
Proposed resolution (August, 2011):
Change 9.10 [namespace.udecl] paragraph 14 as follows:
If a function declaration in namespace scope or block scope has thesame name and the sameparameter typesparameter-type-list (9.3.4.6 [dcl.fct]) as afunction introduced by ausing-declaration, and thedeclarations do not declare the same function, the program isill-formed.If a function template declaration in namespacescope has the same name, parameter-type-list, return type, andtemplate parameter list as a function template introduced by ausing-declaration, the program is ill-formed.[Note: Twousing-declarations may introduce functionswith the same name and the sameparameter typesparameter-type-list. If, for a call to an unqualifiedfunction name, function overload resolution selects the functionsintroduced by suchusing-declarations, the function call isill-formed. [Example:...