gcc 2.95.1 fails to compile correct code
Andrew Fitzgibbon
awf@robots.ox.ac.uk
Fri Sep 10 04:52:00 GMT 1999
EGCS 1.1.1 compiles this, I'm pretty sure it's correct.
The compiler errors rather than producing an object.
g++ -v -xc++ - << EOF
template <class T> struct A;
template <class T> A<T> operator- (const T, const A<T>&);
template <class T> struct A {
A<T> operator- (const A<T>& ) const;
friend A<T> operator- <> (const T, const A<T>&);
};
template <class T>
struct IUE_matrix {
void inplace_transpose() {
A<int> move;
}
};
EOF
Reading specs from /homes/39/pkg/gcc-2.95-build/lib/gcc-lib/sparc-sun-solaris2.6/2.95.1/specs
gcc version 2.95.1 19990816 (release)
/homes/39/pkg/gcc-2.95-build/lib/gcc-lib/sparc-sun-solaris2.6/2.95.1/cpp -lang-c++ -v -D__GNUC__=2 -D__GNUG__=2 -D__GNUC_MINOR__=95 -D__cplusplus -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) - /var/tmp/cc2E8YzG.ii
GNU CPP version 2.95.1 19990816 (release) (sparc)
#include "..." search starts here:
#include <...> search starts here:
/homes/39/pkg/gcc-2.95-build/lib/gcc-lib/sparc-sun-solaris2.6/2.95.1/../../../../include/g++-3
/homes/39/pkg/gcc-2.95-build/include
/homes/39/pkg/gcc-2.95-build/lib/gcc-lib/sparc-sun-solaris2.6/2.95.1/../../../../sparc-sun-solaris2.6/include
/homes/39/pkg/gcc-2.95-build/lib/gcc-lib/sparc-sun-solaris2.6/2.95.1/include
/usr/include
End of search list.
The following default directories have been omitted from the search path:
End of omitted list.
/homes/39/pkg/gcc-2.95-build/lib/gcc-lib/sparc-sun-solaris2.6/2.95.1/cc1plus /var/tmp/cc2E8YzG.ii -quiet -dumpbase -.cc -version -o /var/tmp/ccGSF2qi.s
GNU C++ version 2.95.1 19990816 (release) (sparc-sun-solaris2.6) compiled by GNU C version egcs-2.91.60 19981201 (egcs-1.1.1 release).
: In instantiation of `A<int>':
:15: instantiated from here
:8: invalid use of undefined type `struct A<int>'
:9: forward declaration of `struct A<int>'
:8: confused by earlier errors, bailing out
More information about the Gcc-bugs
mailing list