From mboxrd@z Thu Jan 1 00:00:00 1970 From: pooh@msu.ru To: gcc-gnats@gcc.gnu.org Subject: c++/2626: extern declaration inside a template member is not considered in namespace scope Date: Tue, 24 Apr 2001 06:06:00 -0000 Message-id: <20010424125727.31827.qmail@sourceware.cygnus.com> X-SW-Source: 2001-04/msg00451.html List-Id: >Number: 2626 >Category: c++ >Synopsis: extern declaration inside a template member is not considered in namespace scope >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: rejects-legal >Submitter-Id: net >Arrival-Date: Tue Apr 24 06:06:00 PDT 2001 >Closed-Date: >Last-Modified: >Originator: Andrey Slepuhin >Release: gcc version 3.0 20010422 (prerelease) >Organization: >Environment: x86 RedHat Linux 6.2, kernel-2.2.18, glibc-2.1.3 >Description: gcc does not consider extern declaration in namespace scope pooh@cluster:~/work/grace/examples$ gcc tt.cc /tmp/ccAXbH6i.o: In function `A::X::X()': /tmp/ccAXbH6i.o(.gnu.linkonce.t._ZN1A1XIiEC1Ev+0xb): undefined reference to `abcdef' collect2: ld returned 1 exit status >How-To-Repeat: #include namespace A { int abcdef; template class X { public: inline X () { extern int abcdef; printf("%d\n", abcdef); } }; } using namespace A; int main (int argc, char* argv[]) { X x; return 0; } >Fix: >Release-Note: >Audit-Trail: >Unformatted: