Следующий код не компилируется под gcc-4.7.1, а компилируется под clang-3.2. Какой из них следует стандарту С++ 11?
struct X {
virtual ~X() = default;
};
struct Y : X {
virtual ~Y() = default;
};
gcc-4.7.1 жалуется, что:
looser throw specifier for 'virtual Y::~Y()'
error: overriding 'virtual X::~X() noexcept(true)'
Очевидно, что gcc-4.7.1 считает, что деструктор по умолчанию не установлен, но Y-деструктор по умолчанию не является ничем. Почему это? Может ли кто-нибудь обратиться к правильному месту в стандарте? Спасибо.
Я видел похожие вопросы о stackoverflow, но я не видел ответов, ссылающихся на стандарт.