std::default_initializable
Материал из cppreference.com
<tbody>
</tbody>
| Определено в заголовочном файле <concepts>
|
||
template < class T > concept default_initializable = std::constructible_from<T> && requires { T{}; } && /* T t; корректно, смотрите ниже */; |
(начиная с C++20) | |
Концепт default_initializable проверяет, могут ли переменные типа T быть
- инициализированы значением (
T()корректен); - напрямую инициализированы списком из пустого списка инициализаторов (
T{}корректен); и - инициализированы по умолчанию (
T t;корректен).
Проверка доступа осуществляется также в случае когда контекст не имеет отношения к T. Учитывается только действительность непосредственного контекста инициализации переменной.
Возможное использование
template<class T>
concept default_initializable =
std::constructible_from<T> &&
requires { T{}; } &&
requires { ::new T; };
|
Смотрите также
(C++20) |
указывает, что переменная типа может быть создана из набора или привязана к типам аргументов (концепт) |
| проверяет, есть ли у типа конструктор по умолчанию (шаблон класса) |