tible")  
[ assignable_from  ](/w/cpp/concepts/assignable_from "cpp/concepts/assignable
from")  
  
|  Comparison concepts  
---  
[ equality_comparable  equality_comparable_with
](/w/cpp/concepts/equality_comparable "cpp/concepts/equality comparable")  
[ totally_ordered  totally_ordered_with  ](/w/cpp/concepts/totally_ordered
"cpp/concepts/totally ordered")  
Object concepts  
[ movable  ](/w/cpp/concepts/movable "cpp/concepts/movable")  
[ copyable  ](/w/cpp/concepts/copyable "cpp/concepts/copyable")  
[ semiregular  ](/w/cpp/concepts/semiregular "cpp/concepts/semiregular")  
[ regular  ](/w/cpp/concepts/regular "cpp/concepts/regular")  
Callable concepts  
[ invocable  regular_invocable  ](/w/cpp/concepts/invocable
"cpp/concepts/invocable")  
[ predicate  ](/w/cpp/concepts/predicate "cpp/concepts/predicate")  
[ relation  ](/w/cpp/concepts/relation "cpp/concepts/relation")  
[ equivalence_relation  ](/w/cpp/concepts/equivalence_relation
"cpp/concepts/equivalence relation")  
[ strict_weak_order  ](/w/cpp/concepts/strict_weak_order "cpp/concepts/strict
weak order")  
  
|  Exposition-only concepts  
---  
[ _boolean-testable_ ](/w/cpp/concepts/boolean-testable "cpp/concepts/boolean-
testable")  
  
[ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/concepts/navbar_content&action=edit)

Defined in header ` [ <concepts> ](/w/cpp/header/concepts "cpp/header/concepts") ` |  |   
---|---|---  
template  < class  T  >  
concept default_initializable  =  [ std::  constructible_from
](http://en.cppreference.com/w/cpp/concepts/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 ](/w/cpp/language/value_initialization "cpp/language/value initialization") (  T  (  )  is well-formed); 
  * [ direct-list-initialized ](/w/cpp/language/list_initialization "cpp/language/list initialization") from an empty initializer list (  T  {  }  is well-formed); and 
  * [ default-initialized ](/w/cpp/language/default_initialization "cpp/language/default initialization") (  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.

###  [ [ edit
](/mwiki/index.php?title=cpp/concepts/default_initializable&action=edit&section=1
"Edit section: Possible implementation") ]  Possible implementation

    
    
    template<class T>
    concept default_initializable =
        [std::constructible_from](http://en.cppreference.com/w/cpp/concepts/constructible_from)<T> &&
        requires { T{}; } &&
        requires { ::new T; };  
  
---  
  
###  [ [ edit
](/mwiki/index.php?title=cpp/concepts/default_initializable&action=edit&section=2
"Edit section: See also") ]  See also

[ constructible_from  ](/w/cpp/concepts/constructible_from "cpp/concepts/constructible from") (C++20)  |  specifies that a variable of the type can be constructed from or bound to a set of argument types   
(concept)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/concepts/dsc_constructible_from&action=edit)  
---|---  
[ is_default_constructible  is_trivially_default_constructible  is_nothrow_default_constructible  ](/w/cpp/types/is_default_constructible "cpp/types/is default constructible") (C++11)  (C++11)  (C++11)  |  checks if a type has a default constructor   
(class template)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/types/dsc_is_default_constructible&action=edit)  
  
Retrieved from " [
https://en.cppreference.com/mwiki/index.php?title=cpp/concepts/default_initializable&oldid=161741
](https://en.cppreference.com/mwiki/index.php?title=cpp/concepts/default_initializable&oldid=161741)
"

#####  Navigation

  * [ Support us ](http://www.cppreference.com/support)
  * [ Recent changes ](/w/Specia