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 &#8216;void
test_chroot_base<T>::setUp()&#8217;:
test-sbuild-chroot.h:81: error: expected primary-expression before
&#8216;>&#8217; token
test-sbuild-chroot.h:81: error: expected primary-expression before
&#8216;)&#8217; 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 &#8216;void
test_chroot_base<T>::setUp()&#8217;:
test-sbuild-chroot.h:81: error: expected primary-expression before
&#8216;>&#8217; token
test-sbuild-chroot.h:81: error: expected primary-expression before
&#8216;)&#8217; 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

Reply via email to