This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21 Core Issues List revision 117a. See http://www.open-std.org/jtc1/sc22/wg21/ for the official list.

2025-04-13


2582. Differing member lookup from nested classes

Section: 6.5.2  [class.member.lookup]     Status: CD6     Submitter: Jason Merrill     Date: 2022-05-02

[Accepted at the July, 2022 meeting.]

Consider:

 typedef int T; struct A { struct B { static T t; }; typedef float T; // IFNDR? }; 

Subclause 6.5.2 [class.member.lookup] paragraph 6 specifies:

The result of the search is the declaration set of S(N, T). If it is an invalid set, the program is ill-formed. If it differs from the result of a search in T for N from immediately after the class-specifier of T, the program is ill-formed, no diagnostic required.

It is unclear whether the lookup of T inside A::B is subject to the "if it differs" rule, given that the class-specifier of A::B ends before introducing A::T.

Proposed resolution (approved by CWG 2022-05-06):

Change in 6.5.2 [class.member.lookup] paragraph 6 as follows:

If it differs from the result of a search in T for N from immediately after the class-specifierin a complete-class context of T, the program is ill-formed, no diagnostic required.


close