The following code fails to compile: std::tr1::shared_ptr<const sbuild::chroot_facet_session> psess; psess = this->chroot->get_facet<sbuild::chroot_facet_session>();
However, this code compiles without error: std::tr1::shared_ptr<const sbuild::chroot_facet_session> psess; psess = chroot->get_facet<sbuild::chroot_facet_session>(); The only difference is the deletion of the "this" pointer. chroot is a member of the class this method is a part of, and get_facet is a templated member function of the chroot class. I will attach preprocessed source for g++-4.3.3, 4.4.1 and 4.5.0 (recent SVN). All three versions fail to compile this valid code. The output of g++ -v -save-temps for all three compiler versions follows: g++ -v -save-temps -DHAVE_CONFIG_H -I. -I.. -I../sbuild -I.. -I/usr/include/uuid -DTESTDATADIR='"./testdata"' -I../bin -pthread -pedantic -Wall -Wcast-align -Wwrite-strings -Wswitch-default -Wcast-qual -Wunused-variable -Wredundant-decls -Wctor-dtor-privacy -Wnon-virtual-dtor -Wreorder -Wold-style-cast -Woverloaded-virtual -fstrict-aliasing -g -O2 -MT sbuild-chroot.o -MD -MP -MF .deps/sbuild-chroot.Tpo -c -o sbuild-chroot.i sbuild-chroot.cc Using built-in specs. Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Debian 4.3.3-14' --with-bugurl=file:///usr/share/doc/gcc-4.3/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --enable-shared --enable-multiarch --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --with-gxx-include-dir=/usr/include/c++/4.3 --program-suffix=-4.3 --enable-clocale=gnu --enable-libstdcxx-debug --enable-objc-gc --enable-mpfr --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu Thread model: posix gcc version 4.3.3 (Debian 4.3.3-14) COLLECT_GCC_OPTIONS='-v' '-save-temps' '-DHAVE_CONFIG_H' '-I.' '-I..' '-I../sbuild' '-I..' '-I/usr/include/uuid' '-DTESTDATADIR="./testdata"' '-I../bin' '-pthread' '-pedantic' '-Wall' '-Wcast-align' '-Wwrite-strings' '-Wswitch-default' '-Wcast-qual' '-Wunused-variable' '-Wredundant-decls' '-Wctor-dtor-privacy' '-Wnon-virtual-dtor' '-Wreorder' '-Wold-style-cast' '-Woverloaded-virtual' '-fstrict-aliasing' '-g' '-O2' '-MT' 'sbuild-chroot.o' '-MD' '-MP' '-MF' '.deps/sbuild-chroot.Tpo' '-c' '-o' 'sbuild-chroot.i' '-shared-libgcc' '-mtune=generic' /usr/lib/gcc/x86_64-linux-gnu/4.3.3/cc1plus -E -quiet -v -I. -I.. -I../sbuild -I.. -I/usr/include/uuid -I../bin -MD sbuild-chroot.d -MF .deps/sbuild-chroot.Tpo -MP -MT sbuild-chroot.o -D_GNU_SOURCE -D_REENTRANT -DHAVE_CONFIG_H -DTESTDATADIR="./testdata" sbuild-chroot.cc -mtune=generic -pedantic -Wall -Wcast-align -Wwrite-strings -Wswitch-default -Wcast-qual -Wunused-variable -Wredundant-decls -Wctor-dtor-privacy -Wnon-virtual-dtor -Wreorder -Wold-style-cast -Woverloaded-virtual -fstrict-aliasing -fworking-directory -O2 -fpch-preprocess -o sbuild-chroot.ii ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu" ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/4.3.3/../../../../x86_64-linux-gnu/include" ignoring nonexistent directory "/usr/include/x86_64-linux-gnu" ignoring duplicate directory ".." #include "..." search starts here: #include <...> search starts here: . .. ../sbuild /usr/include/uuid ../bin /usr/include/c++/4.3 /usr/include/c++/4.3/x86_64-linux-gnu /usr/include/c++/4.3/backward /usr/local/include /usr/lib/gcc/x86_64-linux-gnu/4.3.3/include /usr/lib/gcc/x86_64-linux-gnu/4.3.3/include-fixed /usr/include End of search list. COLLECT_GCC_OPTIONS='-v' '-save-temps' '-DHAVE_CONFIG_H' '-I.' '-I..' '-I../sbuild' '-I..' '-I/usr/include/uuid' '-DTESTDATADIR="./testdata"' '-I../bin' '-pthread' '-pedantic' '-Wall' '-Wcast-align' '-Wwrite-strings' '-Wswitch-default' '-Wcast-qual' '-Wunused-variable' '-Wredundant-decls' '-Wctor-dtor-privacy' '-Wnon-virtual-dtor' '-Wreorder' '-Wold-style-cast' '-Woverloaded-virtual' '-fstrict-aliasing' '-g' '-O2' '-MT' 'sbuild-chroot.o' '-MD' '-MP' '-MF' '.deps/sbuild-chroot.Tpo' '-c' '-o' 'sbuild-chroot.i' '-shared-libgcc' '-mtune=generic' /usr/lib/gcc/x86_64-linux-gnu/4.3.3/cc1plus -fpreprocessed sbuild-chroot.ii -quiet -dumpbase sbuild-chroot.cc -mtune=generic -auxbase-strip sbuild-chroot.i -g -O2 -pedantic -Wall -Wcast-align -Wwrite-strings -Wswitch-default -Wcast-qual -Wunused-variable -Wredundant-decls -Wctor-dtor-privacy -Wnon-virtual-dtor -Wreorder -Wold-style-cast -Woverloaded-virtual -version -fstrict-aliasing -o sbuild-chroot.s GNU C++ (Debian 4.3.3-14) version 4.3.3 (x86_64-linux-gnu) compiled by GNU C version 4.3.3, GMP version 4.3.1, MPFR version 2.4.1-p2. GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: 2fdc3f04a8d015d01511ad4fa5c9f116 In file included from sbuild-chroot.cc:25: test-sbuild-chroot.h: In member function ‘void test_chroot_base<T>::setUp()’: test-sbuild-chroot.h:81: error: expected primary-expression before ‘>’ token test-sbuild-chroot.h:81: error: expected primary-expression before ‘)’ token % g++-4.4 -v -save-temps -DHAVE_CONFIG_H -I. -I.. -I../sbuild -I.. -I/usr/include/uuid -DTESTDATADIR='"./testdata"' -I../bin -pthread -pedantic -Wall -Wcast-align -Wwrite-strings -Wswitch-default -Wcast-qual -Wunused-variable -Wredundant-decls -Wctor-dtor-privacy -Wnon-virtual-dtor -Wreorder -Wold-style-cast -Woverloaded-virtual -fstrict-aliasing -g -O2 -MT sbuild-chroot.o -MD -MP -MF .deps/sbuild-chroot.Tpo -c -o sbuild-chroot.o sbuild-chroot.cc Using built-in specs. Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Debian 4.4.1-1' --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --enable-shared --enable-multiarch --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.4 --program-suffix=-4.4 --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-mpfr --enable-objc-gc --with-arch-32=i486 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu Thread model: posix gcc version 4.4.1 (Debian 4.4.1-1) COLLECT_GCC_OPTIONS='-v' '-save-temps' '-DHAVE_CONFIG_H' '-I.' '-I..' '-I../sbuild' '-I..' '-I/usr/include/uuid' '-DTESTDATADIR="./testdata"' '-I../bin' '-pthread' '-pedantic' '-Wall' '-Wcast-align' '-Wwrite-strings' '-Wswitch-default' '-Wcast-qual' '-Wunused-variable' '-Wredundant-decls' '-Wctor-dtor-privacy' '-Wnon-virtual-dtor' '-Wreorder' '-Wold-style-cast' '-Woverloaded-virtual' '-fstrict-aliasing' '-g' '-O2' '-MT' 'sbuild-chroot.o' '-MD' '-MP' '-MF' '.deps/sbuild-chroot.Tpo' '-c' '-o' 'sbuild-chroot.o' '-shared-libgcc' '-mtune=generic' /usr/lib/gcc/x86_64-linux-gnu/4.4.1/cc1plus -E -quiet -v -I. -I.. -I../sbuild -I.. -I/usr/include/uuid -I../bin -MD sbuild-chroot.d -MF .deps/sbuild-chroot.Tpo -MP -MT sbuild-chroot.o -D_GNU_SOURCE -D_REENTRANT -DHAVE_CONFIG_H -DTESTDATADIR="./testdata" sbuild-chroot.cc -mtune=generic -pedantic -Wall -Wcast-align -Wwrite-strings -Wswitch-default -Wcast-qual -Wunused-variable -Wredundant-decls -Wctor-dtor-privacy -Wnon-virtual-dtor -Wreorder -Wold-style-cast -Woverloaded-virtual -fstrict-aliasing -g -fworking-directory -O2 -fpch-preprocess -o sbuild-chroot.ii ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu" ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/4.4.1/../../../../x86_64-linux-gnu/include" ignoring nonexistent directory "/usr/include/x86_64-linux-gnu" ignoring duplicate directory ".." #include "..." search starts here: #include <...> search starts here: . .. ../sbuild /usr/include/uuid ../bin /usr/include/c++/4.4 /usr/include/c++/4.4/x86_64-linux-gnu /usr/include/c++/4.4/backward /usr/local/include /usr/lib/gcc/x86_64-linux-gnu/4.4.1/include /usr/lib/gcc/x86_64-linux-gnu/4.4.1/include-fixed /usr/include End of search list. COLLECT_GCC_OPTIONS='-v' '-save-temps' '-DHAVE_CONFIG_H' '-I.' '-I..' '-I../sbuild' '-I..' '-I/usr/include/uuid' '-DTESTDATADIR="./testdata"' '-I../bin' '-pthread' '-pedantic' '-Wall' '-Wcast-align' '-Wwrite-strings' '-Wswitch-default' '-Wcast-qual' '-Wunused-variable' '-Wredundant-decls' '-Wctor-dtor-privacy' '-Wnon-virtual-dtor' '-Wreorder' '-Wold-style-cast' '-Woverloaded-virtual' '-fstrict-aliasing' '-g' '-O2' '-MT' 'sbuild-chroot.o' '-MD' '-MP' '-MF' '.deps/sbuild-chroot.Tpo' '-c' '-o' 'sbuild-chroot.o' '-shared-libgcc' '-mtune=generic' /usr/lib/gcc/x86_64-linux-gnu/4.4.1/cc1plus -fpreprocessed sbuild-chroot.ii -quiet -dumpbase sbuild-chroot.cc -mtune=generic -auxbase-strip sbuild-chroot.o -g -O2 -pedantic -Wall -Wcast-align -Wwrite-strings -Wswitch-default -Wcast-qual -Wunused-variable -Wredundant-decls -Wctor-dtor-privacy -Wnon-virtual-dtor -Wreorder -Wold-style-cast -Woverloaded-virtual -version -fstrict-aliasing -o sbuild-chroot.s GNU C++ (Debian 4.4.1-1) version 4.4.1 (x86_64-linux-gnu) compiled by GNU C version 4.4.1, GMP version 4.3.1, MPFR version 2.4.1-p2. GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: b0fbdca27f19df11882281387834e682 In file included from sbuild-chroot.cc:25: test-sbuild-chroot.h: In member function ‘void test_chroot_base<T>::setUp()’: test-sbuild-chroot.h:81: error: expected primary-expression before ‘>’ token test-sbuild-chroot.h:81: error: expected primary-expression before ‘)’ token % /usr/lib/gcc-snapshot/bin/g++ -v -save-temps -DHAVE_CONFIG_H -I. -I.. -I../sbuild -I.. -I/usr/include/uuid -DTESTDATADIR='"./testdata"' -I../bin -pthread -pedantic -Wall -Wcast-align -Wwrite-strings -Wswitch-default -Wcast-qual -Wunused-variable -Wredundant-decls -Wctor-dtor-privacy -Wnon-virtual-dtor -Wreorder -Wold-style-cast -Woverloaded-virtual -fstrict-aliasing -g -O2 -MT sbuild-chroot.o -MD -MP -MF .deps/sbuild-chroot.Tpo -c -o sbuild-chroot.o sbuild-chroot.cc Using built-in specs. Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Debian 20090718-1' --with-bugurl=file:///usr/share/doc/gcc-snapshot/README.Bugs --enable-languages=c,ada,c++,java,fortran,objc,obj-c++ --prefix=/usr/lib/gcc-snapshot --enable-shared --enable-multiarch --enable-linker-build-id --with-system-zlib --disable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-mpfr --enable-java-awt=gtk --enable-gtk-cairo --disable-plugin --with-java-home=/usr/lib/gcc-snapshot/java-1.5.0-gcj-4.5/jre --enable-java-home --with-jvm-root-dir=/usr/lib/gcc-snapshot/java-1.5.0-gcj-4.5 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --with-arch-32=i486 --with-tune=generic --disable-werror --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu Thread model: posix gcc version 4.5.0 20090718 (experimental) [trunk revision 149777] (Debian 20090718-1) COLLECT_GCC_OPTIONS='-v' '-save-temps' '-DHAVE_CONFIG_H' '-I.' '-I..' '-I../sbuild' '-I..' '-I/usr/include/uuid' '-DTESTDATADIR="./testdata"' '-I../bin' '-pthread' '-pedantic' '-Wall' '-Wcast-align' '-Wwrite-strings' '-Wswitch-default' '-Wcast-qual' '-Wunused-variable' '-Wredundant-decls' '-Wctor-dtor-privacy' '-Wnon-virtual-dtor' '-Wreorder' '-Wold-style-cast' '-Woverloaded-virtual' '-fstrict-aliasing' '-g' '-O2' '-MT' 'sbuild-chroot.o' '-MD' '-MP' '-MF' '.deps/sbuild-chroot.Tpo' '-c' '-o' 'sbuild-chroot.o' '-shared-libgcc' '-mtune=generic' /usr/lib/gcc-snapshot/libexec/gcc/x86_64-linux-gnu/4.5.0/cc1plus -E -quiet -v -I. -I.. -I../sbuild -I.. -I/usr/include/uuid -I../bin -MD sbuild-chroot.d -MF .deps/sbuild-chroot.Tpo -MP -MT sbuild-chroot.o -D_GNU_SOURCE -D_REENTRANT -DHAVE_CONFIG_H -DTESTDATADIR="./testdata" sbuild-chroot.cc -mtune=generic -pedantic -Wall -Wcast-align -Wwrite-strings -Wswitch-default -Wcast-qual -Wunused-variable -Wredundant-decls -Wctor-dtor-privacy -Wnon-virtual-dtor -Wreorder -Wold-style-cast -Woverloaded-virtual -fstrict-aliasing -g -fworking-directory -O2 -fpch-preprocess -o sbuild-chroot.ii ignoring nonexistent directory "/usr/lib/gcc-snapshot/lib/gcc/x86_64-linux-gnu/4.5.0/../../../../x86_64-linux-gnu/include" ignoring duplicate directory ".." #include "..." search starts here: #include <...> search starts here: . .. ../sbuild /usr/include/uuid ../bin /usr/lib/gcc-snapshot/lib/gcc/x86_64-linux-gnu/4.5.0/../../../../include/c++/4.5.0 /usr/lib/gcc-snapshot/lib/gcc/x86_64-linux-gnu/4.5.0/../../../../include/c++/4.5.0/x86_64-linux-gnu /usr/lib/gcc-snapshot/lib/gcc/x86_64-linux-gnu/4.5.0/../../../../include/c++/4.5.0/backward /usr/local/include /usr/lib/gcc-snapshot/include /usr/lib/gcc-snapshot/lib/gcc/x86_64-linux-gnu/4.5.0/include /usr/lib/gcc-snapshot/lib/gcc/x86_64-linux-gnu/4.5.0/include-fixed /usr/include End of search list. COLLECT_GCC_OPTIONS='-v' '-save-temps' '-DHAVE_CONFIG_H' '-I.' '-I..' '-I../sbuild' '-I..' '-I/usr/include/uuid' '-DTESTDATADIR="./testdata"' '-I../bin' '-pthread' '-pedantic' '-Wall' '-Wcast-align' '-Wwrite-strings' '-Wswitch-default' '-Wcast-qual' '-Wunused-variable' '-Wredundant-decls' '-Wctor-dtor-privacy' '-Wnon-virtual-dtor' '-Wreorder' '-Wold-style-cast' '-Woverloaded-virtual' '-fstrict-aliasing' '-g' '-O2' '-MT' 'sbuild-chroot.o' '-MD' '-MP' '-MF' '.deps/sbuild-chroot.Tpo' '-c' '-o' 'sbuild-chroot.o' '-shared-libgcc' '-mtune=generic' /usr/lib/gcc-snapshot/libexec/gcc/x86_64-linux-gnu/4.5.0/cc1plus -fpreprocessed sbuild-chroot.ii -quiet -dumpbase sbuild-chroot.cc -mtune=generic -auxbase-strip sbuild-chroot.o -g -O2 -pedantic -Wall -Wcast-align -Wwrite-strings -Wswitch-default -Wcast-qual -Wunused-variable -Wredundant-decls -Wctor-dtor-privacy -Wnon-virtual-dtor -Wreorder -Wold-style-cast -Woverloaded-virtual -version -fstrict-aliasing -o sbuild-chroot.s GNU C++ (Debian 20090718-1) version 4.5.0 20090718 (experimental) [trunk revision 149777] (x86_64-linux-gnu) compiled by GNU C version 4.5.0 20090718 (experimental) [trunk revision 149777], GMP version 4.3.1, MPFR version 2.4.1-p2, MPC version 0.6 GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096 GNU C++ (Debian 20090718-1) version 4.5.0 20090718 (experimental) [trunk revision 149777] (x86_64-linux-gnu) compiled by GNU C version 4.5.0 20090718 (experimental) [trunk revision 149777], GMP version 4.3.1, MPFR version 2.4.1-p2, MPC version 0.6 GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096 Compiler executable checksum: f27ed66a15ff965c437096a9bb89e09e In file included from sbuild-chroot.cc:24:0: test-sbuild-chroot.h: In member function 'void test_chroot_base<T>::setUp()': test-sbuild-chroot.h:81:65: error: expected primary-expression before '>' token test-sbuild-chroot.h:81:67: error: expected primary-expression before ')' token I removed all of the -f and -W options to see if this made any difference, and it does not. Regards, Roger -- Summary: g++ error on valid syntax (call of templated object method via this pointer) Product: gcc Version: 4.5.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: rleigh at debian dot org GCC build triplet: x86_64-linux-gnu GCC host triplet: x86_64-linux-gnu GCC target triplet: x86_64-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40897