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