This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/22252] New: pragma interface/implementation still break synthesized methods
- From: "matz at suse dot de" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 30 Jun 2005 14:55:12 -0000
- Subject: [Bug c++/22252] New: pragma interface/implementation still break synthesized methods
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
This is similar to bug 21280, but it is _not_ fixed by the patches therein.
In fact it still happens with current 4.0 branch as of 2005-06-30.
Compile these files:
% cat a.h
#include <vector>
#pragma interface
struct A {
std::vector<char> vc;
};
% cat use.cc
#include "a.h"
A a;
int main() {}
% cat a.cc
#include <vector>
#pragma implementation
#include "a.h"
% g++ -W -Wall -O2 a.cc use.cc
a.h:3: warning: inline function ‘A::A()’ used but never defined
a.h:3: warning: inline function ‘A::~A()’ used but never defined
/tmp/ccuIwMBN.o: In function `__static_initialization_and_destruction_0(int,
int)':
use.cc:(.text+0x31): undefined reference to `A::A()'
collect2: ld returned 1 exit status
This is because A::A() is not synthesized, although it should happen in file
a.cc (which contains the pragma implementation).
So, something still is wrong (this actually breaks building lyx btw.) after
21280 was fixed.
--
Summary: pragma interface/implementation still break synthesized
methods
Product: gcc
Version: 4.0.1
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: matz at suse dot de
CC: gcc-bugs at gcc dot gnu dot org,schwab at suse dot de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22252