The contents of the source file a.cpp: struct A{}; template <> A a;
It gets compiled with no error generated. $ g++ -v -save-temps -c a.cpp Using built-in specs. Target: x86_64-redhat-linux Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-libgcj-multifile --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --enable-plugin --with-java-home=/usr/lib/jvm/java-1.4.2-gcj-1.4.2.0/jre --with-cpu=generic --host=x86_64-redhat-linux Thread model: posix gcc version 4.1.2 20071124 (Red Hat 4.1.2-42) /usr/libexec/gcc/x86_64-redhat-linux/4.1.2/cc1plus -E -quiet -v -D_GNU_SOURCE a.cpp -mtune=generic -fpch-preprocess ignoring nonexistent directory "/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../x86_64-redhat-linux/include" #include "..." search starts here: #include <...> search starts here: /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2 /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/x86_64-redhat-linux /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/backward /usr/local/include /usr/lib/gcc/x86_64-redhat-linux/4.1.2/include /usr/include End of search list. Using built-in specs. Target: x86_64-redhat-linux Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-libgcj-multifile --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --enable-plugin --with-java-home=/usr/lib/jvm/java-1.4.2-gcj-1.4.2.0/jre --with-cpu=generic --host=x86_64-redhat-linux Thread model: posix gcc version 4.1.2 20071124 (Red Hat 4.1.2-42) /usr/libexec/gcc/x86_64-redhat-linux/4.1.2/cc1plus -fpreprocessed /home/ckumar/.ccache/a.tmp.drizzle.flagstonere.local.13966.ii -quiet -dumpbase a.tmp.drizzle.flagstonere.local.13966.ii -mtune=generic -auxbase-strip /home/ckumar/.ccache/tmp.hash.drizzle.flagstonere.local.13966.o -version -o a.tmp.drizzle.flagstonere.local.13966.s GNU C++ version 4.1.2 20071124 (Red Hat 4.1.2-42) (x86_64-redhat-linux) compiled by GNU C version 4.1.2 20071124 (Red Hat 4.1.2-42). GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: bd3e6803e04a6227d5d87dcec6941619 as -V -Qy -o /home/ckumar/.ccache/tmp.hash.drizzle.flagstonere.local.13966.o a.tmp.drizzle.flagstonere.local.13966.s GNU assembler version 2.17.50.0.6-6.el5 (x86_64-redhat-linux) using BFD version 2.17.50.0.6-6.el5 20061020 $ g++ -v -save-temps -c a.cpp Using built-in specs. Target: x86_64-unknown-linux-gnu Configured with: ../gcc-4.4.1/configure --with-mpfr=/opt/mpfr/ --with-gmp=/opt/gmp/ --with-ppl=/opt/ppl/ --with-cloog=/opt/cloog-ppl/ --with-mpc=/opt/mpc/ --prefix=/opt/gcc/441/ --enable-languages=c,c++ Thread model: posix gcc version 4.4.1 (GCC) COLLECT_GCC_OPTIONS='-v' '-save-temps' '-c' '-shared-libgcc' '-mtune=generic' /opt/gcc/441/bin/../libexec/gcc/x86_64-unknown-linux-gnu/4.4.1/cc1plus -E -quiet -v -iprefix /opt/gcc/441/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.4.1/ -D_GNU_SOURCE a.cpp -mtune=generic -fpch-preprocess -o a.ii ignoring nonexistent directory "/opt/gcc/441/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.4.1/../../../../x86_64-unknown-linux-gnu/include" ignoring duplicate directory "/opt/gcc/441/bin/../lib/gcc/../../lib/gcc/x86_64-unknown-linux-gnu/4.4.1/../../../../include/c++/4.4.1" ignoring duplicate directory "/opt/gcc/441/bin/../lib/gcc/../../lib/gcc/x86_64-unknown-linux-gnu/4.4.1/../../../../include/c++/4.4.1/x86_64-unknown-linux-gnu" ignoring duplicate directory "/opt/gcc/441/bin/../lib/gcc/../../lib/gcc/x86_64-unknown-linux-gnu/4.4.1/../../../../include/c++/4.4.1/backward" ignoring duplicate directory "/opt/gcc/441/bin/../lib/gcc/../../lib/gcc/x86_64-unknown-linux-gnu/4.4.1/include" ignoring duplicate directory "/opt/gcc/441/bin/../lib/gcc/../../lib/gcc/x86_64-unknown-linux-gnu/4.4.1/include-fixed" ignoring nonexistent directory "/opt/gcc/441/bin/../lib/gcc/../../lib/gcc/x86_64-unknown-linux-gnu/4.4.1/../../../../x86_64-unknown-linux-gnu/include" #include "..." search starts here: #include <...> search starts here: /opt/gcc/441/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.4.1/../../../../include/c++/4.4.1 /opt/gcc/441/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.4.1/../../../../include/c++/4.4.1/x86_64-unknown-linux-gnu /opt/gcc/441/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.4.1/../../../../include/c++/4.4.1/backward /opt/gcc/441/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.4.1/include /opt/gcc/441/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.4.1/include-fixed /usr/local/include /opt/gcc/441/bin/../lib/gcc/../../include /usr/include End of search list. COLLECT_GCC_OPTIONS='-v' '-save-temps' '-c' '-shared-libgcc' '-mtune=generic' /opt/gcc/441/bin/../libexec/gcc/x86_64-unknown-linux-gnu/4.4.1/cc1plus -fpreprocessed a.ii -quiet -dumpbase a.cpp -mtune=generic -auxbase a -version -o a.s GNU C++ (GCC) version 4.4.1 (x86_64-unknown-linux-gnu) compiled by GNU C version 4.4.1, GMP version 4.3.1, MPFR version 2.4.1. GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: 097af4cf5e65db9e59b9a4d7f0d91d3b COLLECT_GCC_OPTIONS='-v' '-save-temps' '-c' '-shared-libgcc' '-mtune=generic' as -V -Qy -o a.o a.s GNU assembler version 2.17.50.0.6-6.el5 (x86_64-redhat-linux) using BFD version 2.17.50.0.6-6.el5 20061020 COMPILER_PATH=/opt/gcc/441/bin/../libexec/gcc/x86_64-unknown-linux-gnu/4.4.1/:/opt/gcc/441/bin/../libexec/gcc/ LIBRARY_PATH=/opt/gcc/441/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.4.1/:/opt/gcc/441/bin/../lib/gcc/:/opt/gcc/441/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.4.1/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/opt/gcc/441/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.4.1/../../../:/lib/:/usr/lib/ COLLECT_GCC_OPTIONS='-v' '-save-temps' '-c' '-shared-libgcc' '-mtune=generic' Using built-in specs. Target: x86_64-unknown-linux-gnu Configured with: ../gcc-trunk/configure --with-mpfr=/opt/mpfr/ --with-gmp=/opt/gmp/ --with-ppl=/opt/ppl/ --with-cloog=/opt/cloog-ppl/ --with-mpc=/opt/mpc/ --prefix=/opt/gcc/45/ --enable-languages=c,c++ Thread model: posix gcc version 4.5.0 20090820 (experimental) (GCC) COLLECT_GCC_OPTIONS='-v' '-save-temps' '-c' '-shared-libgcc' '-mtune=generic' /opt/gcc/45/bin/../libexec/gcc/x86_64-unknown-linux-gnu/4.5.0/cc1plus -E -quiet -v -iprefix /opt/gcc/45/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.5.0/ -D_GNU_SOURCE a.cpp -mtune=generic -fpch-preprocess -o a.ii ignoring nonexistent directory "/opt/gcc/45/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.5.0/../../../../x86_64-unknown-linux-gnu/include" ignoring duplicate directory "/opt/gcc/45/bin/../lib/gcc/../../lib/gcc/x86_64-unknown-linux-gnu/4.5.0/../../../../include/c++/4.5.0" ignoring duplicate directory "/opt/gcc/45/bin/../lib/gcc/../../lib/gcc/x86_64-unknown-linux-gnu/4.5.0/../../../../include/c++/4.5.0/x86_64-unknown-linux-gnu" ignoring duplicate directory "/opt/gcc/45/bin/../lib/gcc/../../lib/gcc/x86_64-unknown-linux-gnu/4.5.0/../../../../include/c++/4.5.0/backward" ignoring duplicate directory "/opt/gcc/45/bin/../lib/gcc/../../lib/gcc/x86_64-unknown-linux-gnu/4.5.0/include" ignoring duplicate directory "/opt/gcc/45/bin/../lib/gcc/../../lib/gcc/x86_64-unknown-linux-gnu/4.5.0/include-fixed" ignoring nonexistent directory "/opt/gcc/45/bin/../lib/gcc/../../lib/gcc/x86_64-unknown-linux-gnu/4.5.0/../../../../x86_64-unknown-linux-gnu/include" #include "..." search starts here: #include <...> search starts here: /opt/gcc/45/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.5.0/../../../../include/c++/4.5.0 /opt/gcc/45/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.5.0/../../../../include/c++/4.5.0/x86_64-unknown-linux-gnu /opt/gcc/45/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.5.0/../../../../include/c++/4.5.0/backward /opt/gcc/45/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.5.0/include /opt/gcc/45/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.5.0/include-fixed /usr/local/include /opt/gcc/45/bin/../lib/gcc/../../include /usr/include End of search list. COLLECT_GCC_OPTIONS='-v' '-save-temps' '-c' '-shared-libgcc' '-mtune=generic' /opt/gcc/45/bin/../libexec/gcc/x86_64-unknown-linux-gnu/4.5.0/cc1plus -fpreprocessed a.ii -quiet -dumpbase a.cpp -mtune=generic -auxbase a -version -o a.s GNU C++ (GCC) version 4.5.0 20090820 (experimental) (x86_64-unknown-linux-gnu) compiled by GNU C version 4.5.0 20090820 (experimental), GMP version 4.3.1, MPFR version 2.4.1, MPC version 0.6 GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096 GNU C++ (GCC) version 4.5.0 20090820 (experimental) (x86_64-unknown-linux-gnu) compiled by GNU C version 4.5.0 20090820 (experimental), GMP version 4.3.1, MPFR version 2.4.1, MPC version 0.6 GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096 Compiler executable checksum: c9ce94de508883076922d2e84e549544 COLLECT_GCC_OPTIONS='-v' '-save-temps' '-c' '-shared-libgcc' '-mtune=generic' as -V -Qy -o a.o a.s GNU assembler version 2.17.50.0.6-6.el5 (x86_64-redhat-linux) using BFD version 2.17.50.0.6-6.el5 20061020 COMPILER_PATH=/opt/gcc/45/bin/../libexec/gcc/x86_64-unknown-linux-gnu/4.5.0/:/opt/gcc/45/bin/../libexec/gcc/ LIBRARY_PATH=/opt/gcc/45/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.5.0/:/opt/gcc/45/bin/../lib/gcc/:/opt/gcc/45/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.5.0/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/opt/gcc/45/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.5.0/../../../:/lib/:/usr/lib/ COLLECT_GCC_OPTIONS='-v' '-save-temps' '-c' '-shared-libgcc' '-mtune=generic' -- Summary: invalid C++ code compiles with no error Product: gcc Version: 4.5.0 Status: UNCONFIRMED Severity: major Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: cs9in at acm dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41875