«Вывод этого» приводит к тому, что «спецификация исключения недоступна до конца определения класса», это ошибка компилят ⇐ C++

Программы на C++. Форум разработчиков
Anonymous
«Вывод этого» приводит к тому, что «спецификация исключения недоступна до конца определения класса», это ошибка компилят

Сообщение Anonymous »

Рассмотрим следующий код:

Код: Выделить всё

struct A
{
void foo(this auto &&) noexcept(true) {}
auto bar() -> decltype(foo()) {}
};
Clang 19 отклоняет этот код с ошибкой ниже, в то время как GCC и MSVC его принимают.

Код: Выделить всё

:4:28: error: exception specification is not available until end of class definition
4 |     auto bar() -> decltype(foo()) {}
|                            ^
Этот код незаконен или это ошибка Clang? Если это незаконно, то почему? (Почему на данный момент не может быть доступна спецификация исключения?)

Чтобы внести ясность, мой фактический noException(...) зависит от этого, поэтому удаление (true) не является вариантом.
Кроме того, если я начну использовать в нем это, GCC начнет давать сбой : https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117106

Подробнее здесь: https://stackoverflow.com/questions/790 ... -end-of-cl

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