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