std::default_initializable

< cpp‎ | concepts
定义于头文件 <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 (static_cast<void*>(nullptr)) T; };

参阅

指定该类型的变量能从一组实参类型进行构造,或绑定到一组实参类型
(概念)
检查类型是否有默认构造函数
(类模板)