std::default_initializable

来自cppreference.com
< cpp‎ | concepts
在标头 <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{}; } &&
    requires { ::new (static_cast<void*>(nullptr)) T; };

参阅

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