Spec-Zone.ru › C++

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]

См. также

constructible_from
(C++20)
указывает, что переменная данного типа может быть создана из набора типов аргументов или привязана к нему
(концепт)
is_default_constructibleis_trivially_default_constructibleis_nothrow_default_constructible
(C++11)(C++11)(C++11)
проверяет, имеет ли тип конструктор по умолчанию
(шаблон класса)
is_default_constructible_typeis_trivially_default_constructible_typeis_nothrow_default_constructible_type
(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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API