Namespaces
Variants

std:: default_initializable

From cppreference.net
Определено в заголовочном файле <concepts>
template < class T >

concept default_initializable = std:: constructible_from < T > && requires { T { } ; } &&

/* T t; является корректным, см. ниже */ ;
(начиная с C++20)

Концепция default_initializable проверяет, могут ли переменные типа 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]

Смотрите также

определяет, что переменная типа может быть сконструирована или связана с набором типов аргументов
(концепт)
проверяет, имеет ли тип конструктор по умолчанию
(шаблон класса)