[Bug c++/65520] New: elaborated-type-specifiers and inaccessible injected-class-names
rs2740 at gmail dot com
gcc-bugzilla@gcc.gnu.org
Mon Mar 23 05:23:00 GMT 2015
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65520
Bug ID: 65520
Summary: elaborated-type-specifiers and inaccessible
injected-class-names
Product: gcc
Version: 5.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: rs2740 at gmail dot com
Repro:
struct A {};
struct B : private A {};
struct C : public B {
struct A m_a; // error: A is the inaccessible injected-class-name
};
Per [basic.lookup.elab]/p2, the elaborated-type-specifier `struct A` should
cause an unqualified name lookup for `A`, and per [basic.lookup.unqual]/p7 the
name is first searched in C and its base classes, which should find the
inaccessible injected-class-name, rendering the code ill-formed.
Instead, GCC accepts this code. It is rejected by all versions of Clang I
tested (3.0 and later).
More information about the Gcc-bugs
mailing list