http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56191
Bug #: 56191 Summary: Destructor affects noexcept detection Classification: Unclassified Product: gcc Version: 4.7.2 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassig...@gcc.gnu.org ReportedBy: antosh...@gmail.com GCC 4.7.2 incorrectly detects noexcept specification in case of move constructor. Here is an example: struct descriptor_owner_movable { descriptor_owner_movable(descriptor_owner_movable&& ) noexcept {} // Without destructor it compiles correctly ~descriptor_owner_movable() {} }; descriptor_owner_movable&& declval() noexcept; int main() { static_assert( noexcept(descriptor_owner_movable(declval())) , "But it is nothrow!"); return 0; }