Видна ли статическая функция-член внутри шаблонного класса до ее объявления?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; | ^
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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