From mboxrd@z Thu Jan 1 00:00:00 1970 From: aroach@stoic.electriceyeball.com To: gcc-gnats@gcc.gnu.org Subject: c++/3333: Using declaration doesn't work with classes. Date: Thu, 21 Jun 2001 08:46:00 -0000 Message-id: <20010621154824.A740D8FA60@stoic.electriceyeball.com> X-SW-Source: 2001-06/msg00901.html List-Id: >Number: 3333 >Category: c++ >Synopsis: Using declaration doesn't work with classes. >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: rejects-legal >Submitter-Id: net >Arrival-Date: Thu Jun 21 08:46:02 PDT 2001 >Closed-Date: >Last-Modified: >Originator: Anthony Roach >Release: 3.0 >Organization: >Environment: System: Linux stoic 2.2.19 #1 Thu Apr 5 15:18:02 EST 2001 i686 unknown Architecture: i686 host: i686-pc-linux-gnu build: i686-pc-linux-gnu target: i686-pc-linux-gnu configured with: ../gcc-3.0/configure --prefix=/usr/local/opt/gcc-3.0 >Description: Using declaration should be usable for classes as well as namespaces in most cases, but GCC restricts most uses to namespaces. >How-To-Repeat: source that produces the bug: // BEGIN: usingBug.cpp class A { public: class B { }; }; using A::B; int main() { B b; return 0; } // END: usingBug.cpp to compine: gcc usingBug.cpp gcc output: usingBug.cpp:11: `A' is not a namespace usingBug.cpp: In function `int main()': usingBug.cpp:15: `B' undeclared (first use this function) usingBug.cpp:15: (Each undeclared identifier is reported only once for each function it appears in.) usingBug.cpp:15: parse error before `;' token >Fix: work around: // BEGIN: usingFixed.cpp class A { public: class B { }; }; int main() { A::B b; return 0; } // END: usingFixed.cpp >Release-Note: >Audit-Trail: >Unformatted: