std::default_initializable
Определён в заголовочном файле <concepts> | ||
|---|---|---|
template< class T >
concept default_initializable = std::constructible_from<T> && requires { T{}; } &&
/* T t; is well-formed, see below */;
| (начиная с 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] - Стандарт C++20 (ISO/IEC 14882:2020):
- 18.4.12 Концепт
default_initializable[concept.default.init]
См. также
|
(C++20) | указывает, что переменная данного типа может быть создана из набора типов аргументов или привязана к нему (концепт) |
|
(C++11)(C++11)(C++11) | проверяет, имеет ли тип конструктор по умолчанию (шаблон класса) |
|
(C++26)(C++26)(C++26) | проверяет, имеет ли отражённый тип конструктор по умолчанию (функция) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/concepts/default_initializable