This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
C++ pointer to member regression (?)
- From: Martin Reinecke <martin at MPA-Garching dot MPG dot DE>
- To: gcc at gcc dot gnu dot org
- Date: Tue, 8 Jun 2004 15:53:16 +0200
- Subject: C++ pointer to member regression (?)
Hi,
since a few days (can't say for sure for how long), g++ 3.4-branch and
mainline refuse to compile the code below:
struct foo
{
int f1(int) const;
};
template<typename T> struct bar: public foo
{
void func()
{
typedef int (foo::*fptr)(int) const;
fptr ptr = &foo::f1;
}
};
~/tmp>g++ -c -v pmemb.cc
Reading specs from /afs/mpa/data/martin/ugcc/lib/gcc/i686-pc-linux-gnu/3.5.0/specs
Configured with: /scratch/gcc/configure --quiet --prefix=/afs/mpa/data/martin/ugcc --enable-languages=c++,f95 --with-gmp=/afs/mpa/data/martin/mygmp
Thread model: posix
gcc version 3.5.0 20040608 (experimental)
/afs/mpa/data/martin/ugcc/libexec/gcc/i686-pc-linux-gnu/3.5.0/cc1plus -quiet -v -D_GNU_SOURCE pmemb.cc -quiet -dumpbase pmemb.cc -mtune=pentiumpro -auxbase pmemb -version -o /tmp/ccj0fNsd.s
ignoring nonexistent directory "/afs/mpa/data/martin/ugcc/lib/gcc/i686-pc-linux-gnu/3.5.0/../../../../i686-pc-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
/afs/mpa/data/martin/ugcc/lib/gcc/i686-pc-linux-gnu/3.5.0/../../../../include/c++/3.5.0
/afs/mpa/data/martin/ugcc/lib/gcc/i686-pc-linux-gnu/3.5.0/../../../../include/c++/3.5.0/i686-pc-linux-gnu
/afs/mpa/data/martin/ugcc/lib/gcc/i686-pc-linux-gnu/3.5.0/../../../../include/c++/3.5.0/backward
/usr/local/include
/afs/mpa/data/martin/ugcc/include
/afs/mpa/data/martin/ugcc/lib/gcc/i686-pc-linux-gnu/3.5.0/include
/usr/include
End of search list.
GNU C++ version 3.5.0 20040608 (experimental) (i686-pc-linux-gnu)
compiled by GNU C version 3.5.0 20040608 (experimental).
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
pmemb.cc: In member function `void bar<T>::func()':
pmemb.cc:11: error: invalid use of ' foo::f1' to form a pointer-to-member-function. Use a qualified-id.
g++ 3.3 (as well as several other compilers) compiles this without complaint.
I'm not a pointer-to-member expert, so I cannot tell for sure which compiler
is right. If there is agreement that this is a bug, I'll file it in Bugzilla.
Cheers,
Martin
--