Associated namespaces of doubly-nested classes
6.5.4 [basic.lookup.argdep]
David Krauss

Created on 2013-05-29.00:00:00 last changed 81 months ago


Date: 2014-02-15.00:00:00

[Moved to DR at the February, 2014 meeting.]

Date: 2013-09-15.00:00:00

Proposed resolution (September, 2013):

This issue is resolved by the resolution of issue 1691.

Date: 2013-05-29.00:00:00

According to 6.5.4 [basic.lookup.argdep] paragraph 2,

If T is a class type (including unions), its associated classes are: the class itself; the class of which it is a member, if any; and its direct and indirect base classes. Its associated namespaces are the namespaces of which its associated classes are members.

Consider an example like

  struct A {
    struct B {
      struct C { };

A has one associated class, itself, and has the global namespace as its associated namespace. A::B has two associated classes, A and itself, and by virtue of its association with A, has the global namespace as its associated namespace. A::B::C has two associated classes, A::B and itself. However, because neither A::B nor A::B::C is a member of a namespace, A::B::C has no associated namespaces.

This seems like a defect.

Date User Action Args
2014-11-24 00:00:00adminsetstatus: dr -> c++14
2014-03-03 00:00:00adminsetmessages: + msg4930
2014-03-03 00:00:00adminsetstatus: ready -> dr
2013-10-14 00:00:00adminsetmessages: + msg4569
2013-10-14 00:00:00adminsetstatus: open -> ready
2013-05-29 00:00:00admincreate