命名空间
变体
操作

std::default_initializable (自 C++20 起)

来自 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{}; ::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]

[编辑] 另请参阅

指定类型变量可以从一组参数类型构造或绑定到一组参数类型
(概念) [编辑]
检查类型是否具有默认构造函数
(类模板) [编辑]