struct S { virtual int foo() = 0; }; int S::foo() { return 0; } int S::foo() { return 0; } Affects at least gcc 3.2 and forward.
Confirmed.
Fails since at least gcc 2.95.3.
Patch here: <http://gcc.gnu.org/ml/gcc-patches/2005-02/msg00351.html>.
Subject: Bug 17816 CVSROOT: /cvs/gcc Module name: gcc Changes by: aoliva@gcc.gnu.org 2005-02-14 12:01:16 Modified files: gcc/cp : ChangeLog decl.c gcc/testsuite : ChangeLog Added files: gcc/testsuite/g++.dg/other: redecl2.C Log message: gcc/cp/ChangeLog: PR c++/17816 * decl.c (redeclaration_error_message): Report redefinition of pure virtual function. gcc/testsuite/ChangeLog: PR c++/17816 * g++.dg/other/redecl2.C: New. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/ChangeLog.diff?cvsroot=gcc&r1=1.4626&r2=1.4627 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/decl.c.diff?cvsroot=gcc&r1=1.1362&r2=1.1363 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&r1=1.5029&r2=1.5030 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/other/redecl2.C.diff?cvsroot=gcc&r1=NONE&r2=1.1
Fixed.