http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46630
Summary: Front end issue
Product: gcc
Version: 4.5.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
AssignedTo: [email protected]
ReportedBy: [email protected]
The following C++ code:
class C {
public:
static int N;
union U {
int m;
char k;
};
typedef void (*A[3])(int);
} c;
int C::N = 0;
int n = 0;
template <class T> struct S {
void f(void) { (void) sizeof(typename T::N); }
};
S<C> s;
void g(void) { s.f(); }
Should compile fine per ISO/IEC 14882:2005, 14.6 (Name resolution). It fails
with plain vanilla x86 4.5.1 release:
g++ -v
Using built-in specs.
COLLECT_GCC=.../bin_x86/bin/g++
COLLECT_LTO_WRAPPER=.../bin_x86/libexec/gcc/x86_64-unknown-linux-gnu/4.5.1/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: ../configure --enable-threads=posix --prefix=.../bin_x86
--enable-languages=c,c++ --disable-checking
Thread model: posix
gcc version 4.5.1 (GCC)
(any option)
g++ -S test.C
test.C: In member function 'void S<T>::f() [with T = C]':
test.C:56: instantiated from here
test.C:53: error: no type named 'N' in 'class C'