http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39164
Paolo Carlini <paolo.carlini at oracle dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC|gcc-bugs at gcc dot gnu.org | Summary|defaulted dtor redefinition |[C++0x] defaulted dtor |not caught |redefinition not caught --- Comment #2 from Paolo Carlini <paolo.carlini at oracle dot com> 2011-09-30 00:33:08 UTC --- Now it errors out but says: 39164.C:12:25: error: declaration of ‘_Impl_base::~_Impl_base()’ has a different exception specifier 39164.C:6:3: error: from previous declaration ‘_Impl_base::~_Impl_base() noexcept (true)’ I think it's still not what Benjamin expects, because this variant is accepted: struct _Impl_base { _Impl_base() = default; #if 1 ~_Impl_base() = default; #else ~_Impl_base() { } #endif }; _Impl_base::~_Impl_base() noexcept (true) { } int main() { _Impl_base i; return 0; }