std::default_initializable - cppreference.com

From cppreference.com

template<classT>conceptdefault_initializable=std::constructible_from<T>&&requires{T{};}&&/* T t; is well-formed, see below */;(since C++20)The default_initializable concept checks whether variables of type T can be

value-initialized

(i.e., whether T() is well-formed);

direct-list-initialized

from an empty initializer list (i.e., whether T{} is well-formed); and

default-initialized

(i.e., whether Tt; is well-formed).

Access checking is performed as if in a context unrelated to T. Only the validity of the immediate context of the variable initialization is considered.

Possible implementation

template<classT>conceptdefault_initializable=std::constructible_from<T>&&requires{T{};::newT;};References

C++23 standard (ISO/IEC 14882:2024):

18.4.12 Concept default_initializable [concept.default.init]

C++20 standard (ISO/IEC 14882:2020):

18.4.12 Concept default_initializable [concept.default.init]

See also