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]

参见

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