The following problem is another spin-off from PR 13092 (inspired by Andrei Gaponenko's submission in comment #20). It does compile on 3.4 branch and mainline although it shouldn't: =========================== struct A {}; struct B {}; int B::* b; int A::* a = b; ===========================
Confirmed.
Subject: Bug 16853 CVSROOT: /cvs/gcc Module name: gcc Branch: gcc-3_4-branch Changes by: mmitchel@gcc.gnu.org 2004-08-12 00:34:33 Modified files: gcc : ChangeLog gcc/cp : ChangeLog call.c pt.c gcc/ginclude : stddef.h gcc/testsuite : ChangeLog Added files: gcc/testsuite/g++.dg/init: ptrmem1.C gcc/testsuite/g++.dg/parse: offsetof5.C gcc/testsuite/g++.dg/template: overload3.C Log message: PR c++/16618 * ginclude/stddef.h (offsetof): Refine C++ definition. PR c++/16853 * call.c (standard_conversion): Do not accept conversions between pointers to members if the class types are unrelated. PR c++/16870 * pt.c (tsubst): Just return the unknown_type_node. PR c++/16853 * g++.dg/init/ptrmem1.C: New test. PR c++/16618 * g++.dg/parse/offsetof5.C: New test. PR c++/16870 * g++.dg/template/overload3.C: New test. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=2.2326.2.578&r2=2.2326.2.579 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.3892.2.141&r2=1.3892.2.142 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/call.c.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.452.2.20&r2=1.452.2.21 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/pt.c.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.816.2.37&r2=1.816.2.38 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ginclude/stddef.h.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.20&r2=1.20.4.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.3389.2.244&r2=1.3389.2.245 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/init/ptrmem1.C.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=NONE&r2=1.1.2.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/parse/offsetof5.C.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=NONE&r2=1.1.2.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/template/overload3.C.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=NONE&r2=1.1.2.1
Subject: Bug 16853 CVSROOT: /cvs/gcc Module name: gcc Changes by: mmitchel@gcc.gnu.org 2004-08-12 00:43:47 Modified files: gcc/cp : ChangeLog call.c parser.c pt.c gcc/testsuite : ChangeLog Added files: gcc/testsuite/g++.dg/init: ptrmem1.C gcc/testsuite/g++.dg/parse: offsetof5.C gcc/testsuite/g++.dg/template: overload3.C Log message: PR c++/16853 * call.c (standard_conversion): Do not accept conversions between pointers to members if the class types are unrelated. PR c++/16618 * parser.c (cp_parser_builtin_offsetof): Cast to "const volatile char &" instead of just "char &". PR c++/16870 * pt.c (tsubst): Just return the unknown_type_node. PR c++/16853 * g++.dg/init/ptrmem1.C: New test. PR c++/16618 * g++.dg/parse/offsetof5.C: New test. PR c++/16870 * g++.dg/template/overload3.C: New test. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/ChangeLog.diff?cvsroot=gcc&r1=1.4270&r2=1.4271 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/call.c.diff?cvsroot=gcc&r1=1.498&r2=1.499 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/parser.c.diff?cvsroot=gcc&r1=1.234&r2=1.235 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/pt.c.diff?cvsroot=gcc&r1=1.902&r2=1.903 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&r1=1.4119&r2=1.4120 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/init/ptrmem1.C.diff?cvsroot=gcc&r1=1.1&r2=1.2 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/parse/offsetof5.C.diff?cvsroot=gcc&r1=1.1&r2=1.2 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/template/overload3.C.diff?cvsroot=gcc&r1=1.1&r2=1.2
Fixed in GCC 3.4.2.