namespace bug

David Baraff deb@pixar.com
Tue May 4 22:00:00 GMT 1999


This program fails to compile, but is legal.  Note that if
the we declare class Derived within namespace Foo, this compiles.
So the problem is using the style
   class Foo::Derived
for declarations.


Reading specs from /usr/local/share/egcs/lib/gcc-lib/sparc-sun-solaris2.6/egcs-2.93.21/specs
gcc version egcs-2.93.21 19990502 (gcc2 ss-980929 experimental)
 /usr/local/share/egcs/lib/gcc-lib/sparc-sun-solaris2.6/egcs-2.93.21/cpp -lang-c++ -v -D__GNUC__=2 -D__GNUG__=2 -D__cplusplus -D__GNUC_MINOR__=93 -Dsparc -Dsun -Dunix -D__svr4__ -D__SVR4 -D__sparc__ -D__sun__ -D__unix__ -D__svr4__ -D__SVR4 -D__sparc -D__sun -D__unix -Asystem(unix) -Asystem(svr4) -D__EXCEPTIONS -D__GCC_NEW_VARARGS__ -Acpu(sparc) -Amachine(sparc) crap.cpp crap.ii
GNU CPP version egcs-2.93.21 19990502 (gcc2 ss-980929 experimental) (sparc)
#include "..." search starts here:
#include <...> search starts here:
 /usr/local/share/egcs/lib/gcc-lib/sparc-sun-solaris2.6/egcs-2.93.21/../../../../include/g++-2
 /usr/local/include
 /usr/local/share/egcs/lib/gcc-lib/sparc-sun-solaris2.6/egcs-2.93.21/../../../../sparc-sun-solaris2.6/include
 /usr/local/share/egcs/lib/gcc-lib/sparc-sun-solaris2.6/egcs-2.93.21/include
 /usr/include
End of search list.
The following default directories have been omitted from the search path:
End of omitted list.
 /usr/local/share/egcs/lib/gcc-lib/sparc-sun-solaris2.6/egcs-2.93.21/cc1plus crap.ii -quiet -dumpbase crap.cc -version -o crap.s
GNU C++ version egcs-2.93.21 19990502 (gcc2 ss-980929 experimental) (sparc-sun-solaris2.6) compiled by GNU C version egcs-2.93.21 19990502 (gcc2 ss-980929 experimental).
crap.cpp:19: ANSI C++ forbids declaration `Derived' with no type


// ------------ crap.cpp: -------------

namespace Foo {
    class Base;
    template <class T> class Derived;
}

class Foo::Base {
public:
    const int		elementSize;

    Base();
    ~Base();
};

template <class T>
class Foo::Derived : public Foo::Base {
public:

    Derived()
    {
    }
};


More information about the Gcc-bugs mailing list