---  
  
[ Random Numbers ](/w/cpp/named_req#Random_Number_Generation "cpp/named req")  
|  [ SeedSequence  ](/w/cpp/named_req/SeedSequence "cpp/named
req/SeedSequence") (C++11)  
---  
[ RandomNumberEngine  ](/w/cpp/named_req/RandomNumberEngine "cpp/named
req/RandomNumberEngine") (C++11)  
  
|  [ RandomNumberDistribution  ](/w/cpp/named_req/RandomNumberDistribution
"cpp/named req/RandomNumberDistribution") (C++11)  
---  
[ UniformRandomBitGenerator  ](/w/cpp/named_req/UniformRandomBitGenerator
"cpp/named req/UniformRandomBitGenerator") (C++11)  
  
|  [ RandomNumberEngineAdaptor  ](/w/cpp/named_req/RandomNumberEngineAdaptor
"cpp/named req/RandomNumberEngineAdaptor") (C++11)  
---  
  
  
  
[ Concurrency ](/w/cpp/named_req#Concurrency "cpp/named req")  
|  [ BasicLockable  ](/w/cpp/named_req/BasicLockable "cpp/named
req/BasicLockable") (C++11)  
---  
[ Lockable  ](/w/cpp/named_req/Lockable "cpp/named req/Lockable") (C++11)  
[ TimedLockable  ](/w/cpp/named_req/TimedLockable "cpp/named
req/TimedLockable") (C++11)  
  
|  [ SharedLockable  ](/w/cpp/named_req/SharedLockable "cpp/named
req/SharedLockable") (C++14)  
---  
[ SharedTimedLockable  ](/w/cpp/named_req/SharedTimedLockable "cpp/named
req/SharedTimedLockable") (C++14)  
[ Mutex  ](/w/cpp/named_req/Mutex "cpp/named req/Mutex") (C++11)  
  
|  [ TimedMutex  ](/w/cpp/named_req/TimedMutex "cpp/named req/TimedMutex")
(C++11)  
---  
[ SharedMutex  ](/w/cpp/named_req/SharedMutex "cpp/named req/SharedMutex")
(C++17)  
[ SharedTimedMutex  ](/w/cpp/named_req/SharedTimedMutex "cpp/named
req/SharedTimedMutex") (C++14)  
  
[ Ranges ](/w/cpp/named_req#Ranges "cpp/named req")  
|  [ RangeAdaptorObject  ](/w/cpp/named_req/RangeAdaptorObject "cpp/named
req/RangeAdaptorObject") (C++20)  
---  
  
|  [ RangeAdaptorClosureObject  ](/w/cpp/named_req/RangeAdaptorClosureObject
"cpp/named req/RangeAdaptorClosureObject") (C++20)  
---  
  
[ Other ](/w/cpp/named_req#Other "cpp/named req")  
|  [ CharTraits  ](/w/cpp/named_req/CharTraits "cpp/named req/CharTraits")  
---  
[ RegexTraits  ](/w/cpp/named_req/RegexTraits "cpp/named req/RegexTraits")
(C++11)  
[ BitmaskType  ](/w/cpp/named_req/BitmaskType "cpp/named req/BitmaskType")  
[ LiteralType  ](/w/cpp/named_req/LiteralType "cpp/named req/LiteralType")
(C++11)  
  
|  [ NumericType  ](/w/cpp/named_req/NumericType "cpp/named req/NumericType")  
---  
[ UnaryTypeTrait  ](/w/cpp/named_req/UnaryTypeTrait "cpp/named
req/UnaryTypeTrait") (C++11)  
[ BinaryTypeTrait  ](/w/cpp/named_req/BinaryTypeTrait "cpp/named
req/BinaryTypeTrait") (C++11)  
[ TransformationTrait  ](/w/cpp/named_req/TransformationTrait "cpp/named
req/TransformationTrait") (C++11)  
  
|  [ Clock  ](/w/cpp/named_req/Clock "cpp/named req/Clock") (C++11)  
---  
[ TrivialClock  ](/w/cpp/named_req/TrivialClock "cpp/named req/TrivialClock")
(C++11)  
  
  
  
  
  
[ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/named_req/navbar_content&action=edit)

The _named requirements_ listed on this page are the named requirements used
in the normative text of the C++ standard to define the expectations of the
standard library.

The burden to ensure that library templates are instantiated with template
arguments that satisfy these requirements is on the programmer. Failure to do
so may result in very complex compiler diagnostics.

Some of these requirements are formalized in C++20 using the [ concepts
](/w/cpp/language/constraints "cpp/language/constraints") language feature.

|

##  Contents

  * 1  Basic 
  * 2  Type properties 
  * 3  Library-wide 
  * 4  Container 
    * 4.1  Container element 
  * 5  Iterator 
  * 6  Stream I/O functions 
  * 7  Formatters 
  * 8  Random Number Generation 
  * 9  Concurrency 
  * 10  Ranges 
  * 11  Other 

  
---  
  
###  Basic  
  
[ DefaultConstructible  ](/w/cpp/named_req/DefaultConstructible "cpp/named req/DefaultConstructible") |  specifies that an object of the type can be default constructed   
(named requirement)  
[