This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
template specialization of nested classes of templates doesn't work
- To: gcc-bugs at gcc dot gnu dot org
- Subject: template specialization of nested classes of templates doesn't work
- From: Dirk Bonne <dbonne at inform-ac dot com>
- Date: Fri, 18 Feb 2000 13:08:49 +0100
Hi,
I believe I have found a bug demonstrated by following piece of code.
The code is:
#include <iostream.h>
template< class T >
struct limit {
static int f() { return 0; }
};
template< class Y >
struct FF {
struct t_data {
};
};
template< class Y>
struct limit<FF<Y>::t_data> {
static int f() { return 3; }
};
int
main()
{
cout << limit<FF<int>::t_data>::f() << endl;
}
It prints "0" instead of "3".
I did compile it like this:
engel:tmp$ g++ -v -Wall -W t.cc
Reading specs from /usr/lib/gcc-lib/i386-linux/2.95.2/specs
gcc version 2.95.2 20000116 (Debian GNU/Linux)
/usr/lib/gcc-lib/i386-linux/2.95.2/cpp -lang-c++ -v -D__GNUC__=2 -D__GNUG__=2 -D__GNUC_MINOR__=95 -D__cplusplus -D__ELF__ -Dunix -D__i386__ -Dlinux -D__ELF__ -D__unix__ -D__i386__ -D__linux__ -D__unix -D__linux -Asystem(posix) -D__EXCEPTIONS -Wall -W -Acpu(i386) -Amachine(i386) -Di386 -D__i386 -D__i386__ t.cc /var/tmp/ccDohDLz.ii
GNU CPP version 2.95.2 20000116 (Debian GNU/Linux) (i386 Linux/ELF)
#include "..." search starts here:
#include <...> search starts here:
/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../include/g++-3
/usr/local/include
/usr/lib/gcc-lib/i386-linux/2.95.2/include
/usr/include
End of search list.
The following default directories have been omitted from the search path:
/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../i386-linux/include
End of omitted list.
/usr/lib/gcc-lib/i386-linux/2.95.2/cc1plus /var/tmp/ccDohDLz.ii -quiet -dumpbase t.cc -Wall -W -version -o /var/tmp/cc24Xsb6.s
GNU C++ version 2.95.2 20000116 (Debian GNU/Linux) (i386-linux) compiled by GNU C version 2.95.2 20000116 (Debian GNU/Linux).
as -V -Qy -o /var/tmp/ccNCEZWZ.o /var/tmp/cc24Xsb6.s
GNU assembler version 2.9.5 (i386-linux) using BFD version 2.9.5.0.22
/usr/lib/gcc-lib/i386-linux/2.95.2/collect2 -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/gcc-lib/i386-linux/2.95.2/crtbegin.o -L/usr/lib/gcc-lib/i386-linux/2.95.2 /var/tmp/ccNCEZWZ.o -lstdc++ -lm -lgcc -lc -lgcc /usr/lib/gcc-lib/i386-linux/2.95.2/crtend.o /usr/lib/crtn.o
engel:tmp$
Regards,
Dirk Bonne