This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

template specialization of nested classes of templates doesn't work


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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]