>From revision 144119: struct _Impl_base { _Impl_base() = default; #if 1 ~_Impl_base() = default; #else ~_Impl_base() { } #endif }; _Impl_base::~_Impl_base() { } int main() { _Impl_base i; return 0; } compiled: %COMP.sh "-std=c++0x -g -O2 -Wall -Wextra" default2.cc Has no error, when: default2.cc:12: error: redefinition of �_Impl_base::~_Impl_base()� default2.cc:8: error: �_Impl_base::~_Impl_base()� previously defined here Is expected. Code in #else should be equivalent to #if. -- Summary: defaulted dtor redefinition not caught Product: gcc Version: 4.4.0 Status: UNCONFIRMED Keywords: accepts-invalid Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: bkoz at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39164