Видна ли статическая функция-член внутри шаблонного класса до ее объявления? ⇐ C++
Видна ли статическая функция-член внутри шаблонного класса до ее объявления?
Должна ли статическая функция-член 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; | ^
Должна ли статическая функция-член 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; | ^
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
ODR — используйте функцию-член шаблонного класса, только если она действительна.
Anonymous » » в форуме C++ - 0 Ответы
- 15 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Получить указатель на член производного класса, ставший общедоступным с помощью объявления
Anonymous » » в форуме C++ - 0 Ответы
- 9 Просмотры
-
Последнее сообщение Anonymous
-