[Adopted at the February, 2016 meeting.]
Consider the following example:
#include <stdio.h> struct X { X() { puts("X()"); } X(const X&) { puts("X(const X&)"); } ~X() { puts("~X()"); } }; struct Y { ~Y() noexcept(false) { throw 0; } }; X f() { try { Y y; return {}; } catch (...) { } return {}; } int main() { f(); }
Current implementations print X() twice but ~X() only once. That is obviously wrong, but it is not clear that the current wording covers this case.