The following code doesn't compile under gcc-4.7.1 but compile under clang-3.2. Which one follows the C++11 standard?
struct X {
virtual ~X() = default;
};
struct Y : X {
virtual ~Y() = default;
};
gcc-4.7.1 complains that:
looser throw specifier for 'virtual Y::~Y()'
error: overriding 'virtual X::~X() noexcept(true)'
Obviously, gcc-4.7.1 thinks X's default destructor nothrow, but Y's default destructor is not nothrow. Why is this? Can anyone refer to the correct place in standard? Thanks.
I saw similar questions on stackoverflow, but I didn't see the answers refering to the standard.