g++ parse error for nested classes

Jan Reimers reimers@infoserve.net
Sun Feb 22 22:06:00 GMT 1998


This one was ok in egcs-2.91.03 and fails in egcs-2.91egcs-2.91.05
and onward (I never isntalled egcs-2.91.04).

//test17.cc-------------------------------------------------------
#include <complex>

template <class T> class Base
{
 public:
        class Nested {};
};

template <class T> class Der1 : public Base<T>
{
        void foo() {Nested n;} //ok.
};

template <class T> class Der2 : public Base<complex<T> >
{
        void foo() {Nested n;} // "parse error before `;'" !!! 
};
//end of test17.cc-------------------------------------------------


g++ -v test17.cc
Reading specs from
/usr/local/lib/gcc-lib/i686-pc-linux-gnulibc1/egcs-2.91.08/specs
gcc version egcs-2.91.08 980214 (gcc-2.8.0 release)
 /usr/local/lib/gcc-lib/i686-pc-linux-gnulibc1/egcs-2.91.08/cpp
-lang-c++ -v -undef -D__GNUC__=2 -D__GNUG__=2 -D__cplusplus
-D__GNUC_MINOR__=91 -D__ELF__ -Dunix -Dlinux -D__ELF__ -D__unix__
-D__linux__ -D__unix -D__linux -Asystem(posix) -D__EXCEPTIONS -Di386
-Di686 -Asystem(unix) -Acpu(i386) -Amachine(i386) -D__i386__ -D__i686__
-Asystem(unix) -Acpu(i386) -Amachine(i386) test17.cc /tmp/cca14025.ii
GNU CPP version egcs-2.91.08 980214 (gcc-2.8.0 release) (i386 Linux/ELF)
#include "..." search starts here:
#include <...> search starts here:
 /usr/local/include/g++
 /usr/local/include
 /usr/local/i686-pc-linux-gnulibc1/include
 /usr/local/lib/gcc-lib/i686-pc-linux-gnulibc1/egcs-2.91.08/include
 /usr/include
End of search list.
 /usr/local/lib/gcc-lib/i686-pc-linux-gnulibc1/egcs-2.91.08/cc1plus
/tmp/cca14025.ii -quiet -dumpbase test17.cc -version -o /tmp/cca14025.s
GNU C++ version egcs-2.91.08 980214 (gcc-2.8.0 release)
(i686-pc-linux-gnulibc1) compiled by GNU C version egcs-2.91.07 980205
(gcc-2.8.0 release).
test17.cc: In method `void Der2<T>::foo()':
test17.cc:17: parse error before `;'



More information about the Gcc-bugs mailing list