Рекурсивное использование оператора noException компилируется в gcc, но не в clang и msvc.C++

Программы на C++. Форум разработчиков
Anonymous
Рекурсивное использование оператора noException компилируется в gcc, но не в clang и msvc.

Сообщение Anonymous »

Я изучаю C++ по книгам, перечисленным здесь. Я написал следующий пример (по чисто академическим причинам), который компилируется с помощью GCC, но не с Clang и MSVC. Демо.
struct C {
static bool f() noexcept(!noexcept(C::f()))
{
return true;
}
};

Как мы видим, приведенный выше пример компилируется с помощью gcc, но не с msvc и clang.
Итак, мой вопрос > какой компилятор находится здесь (если есть).

GCC компилирует это.
MSVC говорит:
(2): fatal error C1202: recursive type or function dependency context too complex

Кланг говорит:
:2:40: error: exception specification is not available until end of class definition
static bool f() noexcept(!noexcept(C::f()))


Подробнее здесь: https://stackoverflow.com/questions/740 ... g-and-msvc

Вернуться в «C++»