std:: default_initializable
|
Определено в заголовочном файле
<concepts>
|
||
|
template
<
class
T
>
concept default_initializable
=
std::
constructible_from
<
T
>
&&
requires
{
T
{
}
;
}
&&
|
(начиная с C++20) | |
Концепция
default_initializable
проверяет, могут ли переменные типа
T
быть
- инициализировано значением (т.е., является ли T ( ) корректным выражением);
- прямо инициализировано списком из пустого списка инициализации (т.е., является ли T { } корректным выражением); и
- инициализировано по умолчанию (т.е., является ли T t ; корректным выражением).
Проверка доступа выполняется так, как если бы она происходила в контексте, не связанном с T. Учитывается только валидность непосредственного контекста инициализации переменной.
Возможная реализация
template<class T> concept default_initializable = std::constructible_from<T> && requires { T{}; ::new T; }; |
Ссылки
- Стандарт C++23 (ISO/IEC 14882:2024):
-
-
18.4.12 Концепт
default_initializable[concept.default.init]
-
18.4.12 Концепт
- Стандарт C++20 (ISO/IEC 14882:2020):
-
-
18.4.12 Концепт
default_initializable[concept.default.init]
-
18.4.12 Концепт
Смотрите также
|
(C++20)
|
определяет, что переменная типа может быть сконструирована или связана с набором типов аргументов
(концепт) |
|
(C++11)
(C++11)
(C++11)
|
проверяет, имеет ли тип конструктор по умолчанию
(шаблон класса) |