Created on 2013-09-23.00:00:00 last changed 81 months ago
[Moved to DR at the February, 2014 meeting.]
Proposed resolution (September, 2013):
Change 6.5.2 [class.member.lookup] paragraph 3 as follows:
The lookup set for f in C, called S(f, C), consists of two component sets: the declaration set, a set of members named f; and the subobject set, a set of subobjects where declarations of these members (possibly including using-declarations) were found. In the declaration set, using-declarations are replaced by the
members they designate, and type declarations (including injected-class-names) are replaced by the types they designate...
According to 9.9 [namespace.udecl] paragraph 15,
When a using-declaration brings names from a base class into a derived class scope, member functions and member function templates in the derived class override and/or hide member functions and member function templates with the same name, parameter-type-list (22.214.171.124 [dcl.fct]), cv-qualification, and ref-qualifier (if any) in a base class (rather than conflicting).
The algorithm for class-scope name lookup given in 6.5.2 [class.member.lookup], however, does not implement this requirement; there is nothing that removes a hidden base class member (replacing the using-declaration, per paragraph 3) from the result set.
|2014-11-24 00:00:00||admin||set||status: dr -> c++14|
|2014-03-03 00:00:00||admin||set||messages: + msg4955|
|2014-03-03 00:00:00||admin||set||status: ready -> dr|
|2013-10-14 00:00:00||admin||set||messages: + msg4595|