std::default_initializable
From cppreference.com
| Defined in header <concepts>
|
||
| template < class T > concept default_initializable = std::constructible_from<T> && requires { T{}; } && |
(since C++20) | |
The default_initializable concept checks whether variables of type T can be
- value-initialized (T() is well-formed);
- direct-list-initialized from an empty initializer list (T{} is well-formed); and
- default-initialized (T t; 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<class T> concept default_initializable = std::constructible_from<T> && requires { T{}; } && requires { ::new (static_cast<void*>(nullptr)) T; }; |
See also
| (C++20) |
specifies that a variable of the type can be constructed from or bound to a set of argument types (concept) |
| checks if a type has a default constructor (class template) |