|  [ ` <ciso646> ` ](/w/cpp/header/ciso646 "cpp/header/ciso646") (until C++20)  
---  
  
  
  
[ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/header/navbar_content&action=edit)

This header is part of the [ iterator ](/w/cpp/iterator "cpp/iterator")
library.

This header is a partial [ freestanding ](/w/cpp/freestanding "cpp/freestanding") header. Everything inside this header is freestanding beside stream iterators.  |  (since C++23)   
---|---  
|

##  Contents

  * 1  Concepts 
    * 1.1  Iterator concepts 
    * 1.2  Indirect callable concepts 
    * 1.3  Common algorithm requirements 
  * 2  Classes 
    * 2.1  Algorithm utilities 
    * 2.2  Associated types 
    * 2.3  Primitives 
    * 2.4  Adaptors 
    * 2.5  Stream Iterators 
  * 3  Customization point objects 
  * 4  Constants 
  * 5  Functions 
    * 5.1  Adaptors 
    * 5.2  Non-member operators 
    * 5.3  Operations 
    * 5.4  Range access 
  * 6  Synopsis 
    * 6.1  Concept indirectly_readable 
    * 6.2  Concept indirectly_writable 
    * 6.3  Concept weakly_incrementable 
    * 6.4  Concept incrementable 
    * 6.5  Concept input_or_output_iterator 
    * 6.6  Concept sentinel_for 
    * 6.7  Concept sized_sentinel_for 
    * 6.8  Concept input_iterator 
    * 6.9  Concept output_iterator 
    * 6.10  Concept forward_iterator 
    * 6.11  Concept bidirectional_iterator 
    * 6.12  Concept random_access_iterator 
    * 6.13  Concept contiguous_iterator 
    * 6.14  Concept indirectly_unary_invocable 
    * 6.15  Concept indirectly_regular_unary_invocable 
    * 6.16  Concept indirect_unary_predicate 
    * 6.17  Concept indirect_binary_predicate 
    * 6.18  Concept indirect_equivalence_relation 
    * 6.19  Concept indirect_strict_weak_order 
    * 6.20  Concept indirectly_movable 
    * 6.21  Concept indirectly_movable_storable 
    * 6.22  Concept indirectly_copyable 
    * 6.23  Concept indirectly_copyable_storable 
    * 6.24  Concept indirectly_swappable 
    * 6.25  Concept indirectly_comparable 
    * 6.26  Concept permutable 
    * 6.27  Concept mergeable 
    * 6.28  Concept sortable 
    * 6.29  Class template  std::incrementable_traits 
    * 6.30  Class template  std::indirectly_readable_traits 
    * 6.31  Class template  std::projected 
    * 6.32  Class template  std::iterator_traits 
    * 6.33  Iterator tags 
    * 6.34  Class template  std::reverse_iterator 
    * 6.35  Class template  std::back_insert_iterator 
    * 6.36  Class template  std::front_insert_iterator 
    * 6.37  Class template  std::insert_iterator 
    * 6.38  Class template  std::move_iterator 
    * 6.39  Class template  std::move_sentinel 
    * 6.40  Class template  std::common_iterator 
    * 6.41  Class  std::default_sentinel_t 
    * 6.42  Class template  std::counted_iterator 
    * 6.43  Class  std::unreachable_sentinel_t 
    * 6.44  Class template  std::istream_iterator 
    * 6.45  Class template  std::ostream_iterator 
    * 6.46  Class template  std::istreambuf_iterator 
    * 6.47  Class template  std::ostreambuf_iterator 
    * 6.48  Class template  std::iterator 
  * 7  Defect reports 

  
---  
  
###  Concepts  
  
#####  Iterator concepts  
  
[ indirectly_readable  ](/w/cpp/iterator/indirectly_readable "cpp/iterator/indirectly readable") (C++20)  |  specifies that a type is indirectly readable by applying operator ` * `   
(concept)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/iterator/dsc_indirectly_readable&action=edit)  
[ indirectly_writable  ](/w/cpp/iterator/indirectly_writable "cpp/iterator/indirectly writable") (C++20)  |  specifies that a value can be written to an iterator's referenced object   
(concept)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/iterator/dsc_indirectly_writable&action=edit)  
[ weakly_incrementable  ](/w/cpp/iterator/weakly_incrementable "cpp/iterator/weakly incrementable") (C++20)  |  specifies that a [ ` semiregular ` ](