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 Concept default_initializable [concept.default.init]
  • C++20 标准(ISO/IEC 14882:2020):
  • 18.4.12 Concept default_initializable [concept.default.init]

参阅

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