Видна ли статическая функция-член внутри шаблонного класса до ее объявления?C++

Программы на C++. Форум разработчиков
Anonymous
Видна ли статическая функция-член внутри шаблонного класса до ее объявления?

Сообщение Anonymous »


Должна ли статическая функция-член b быть видимой в предложении require конструктора по умолчанию s? Что говорит стандарт C++20 о законности приведенного примера?

шаблон структура s { s() требует (s::b()) = default; // лязг нет, gcc ок, msvc ок статический constexpr bool b() { вернуть истину; } }; static_assert((s{}, true)); Живой пример

Сообщение об ошибке от Clang:
:3:22: ошибка: в 's' нет элемента с именем 'b' 3 | s() требует (s::b()) = default; | ~~~^ :7:15: ошибка: статическое выражение утверждения не является целочисленной константой выражение 7 | static_assert((s{}, true)); | ^~~~~~~~~~~~~ :7:16: примечание: конструктор, не являющийся constexpr, нельзя использовать в константе выражение 7 | static_assert((s{}, true)); | ^ :3:5: примечание: объявлено здесь 3 | s() требует (s::b()) = default; | ^

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