an [ ` indirectly_writable ` ](/w/cpp/iterator/indirectly_writable "cpp/iterator/indirectly writable") type and that the move may be performed via an intermediate object   
(concept)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/iterator/dsc_indirectly_movable_storable&action=edit)  
[ indirectly_copyable  ](/w/cpp/iterator/indirectly_copyable "cpp/iterator/indirectly copyable") (C++20)  |  specifies that values may be copied from an [ ` indirectly_readable ` ](/w/cpp/iterator/indirectly_readable "cpp/iterator/indirectly readable") type to an [ ` indirectly_writable ` ](/w/cpp/iterator/indirectly_writable "cpp/iterator/indirectly writable") type   
(concept)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/iterator/dsc_indirectly_copyable&action=edit)  
[ indirectly_copyable_storable  ](/w/cpp/iterator/indirectly_copyable_storable "cpp/iterator/indirectly copyable storable") (C++20)  |  specifies that values may be copied from an [ ` indirectly_readable ` ](/w/cpp/iterator/indirectly_readable "cpp/iterator/indirectly readable") type to an [ ` indirectly_writable ` ](/w/cpp/iterator/indirectly_writable "cpp/iterator/indirectly writable") type and that the copy may be performed via an intermediate object   
(concept)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/iterator/dsc_indirectly_copyable_storable&action=edit)  
[ indirectly_swappable  ](/w/cpp/iterator/indirectly_swappable "cpp/iterator/indirectly swappable") (C++20)  |  specifies that the values referenced by two [ ` indirectly_readable ` ](/w/cpp/iterator/indirectly_readable "cpp/iterator/indirectly readable") types can be swapped   
(concept)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/iterator/dsc_indirectly_swappable&action=edit)  
[ indirectly_comparable  ](/w/cpp/iterator/indirectly_comparable "cpp/iterator/indirectly comparable") (C++20)  |  specifies that the values referenced by two [ ` indirectly_readable ` ](/w/cpp/iterator/indirectly_readable "cpp/iterator/indirectly readable") types can be compared   
(concept)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/iterator/dsc_indirectly_comparable&action=edit)  
[ permutable  ](/w/cpp/iterator/permutable "cpp/iterator/permutable") (C++20)  |  specifies the common requirements of algorithms that reorder elements in place   
(concept)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/iterator/dsc_permutable&action=edit)  
[ mergeable  ](/w/cpp/iterator/mergeable "cpp/iterator/mergeable") (C++20)  |  specifies the requirements of algorithms that merge sorted sequences into an output sequence by copying elements   
(concept)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/iterator/dsc_mergeable&action=edit)  
[ sortable  ](/w/cpp/iterator/sortable "cpp/iterator/sortable") (C++20)  |  specifies the common requirements of algorithms that permute sequences into ordered sequences   
(concept)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/iterator/dsc_sortable&action=edit)  
  
###  Classes  
  
#####  Algorithm utilities  
  
[ indirect_result_t  ](/w/cpp/iterator/indirect_result_t "cpp/iterator/indirect result t") (C++20)  |  computes the result of invoking a callable object on the result of dereferencing some set of [ ` indirectly_readable ` ](/w/cpp/iterator/indirectly_readable "cpp/iterator/indirectly readable") types   
(alias template)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/iterator/dsc_indirect_result_t&action=edit)  
[ projected  ](/w/cpp/iterator/projected "cpp/iterator/projected") (C++20)  |  helper template for specifying the constraints on algorithms that accept projections   
(class template)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/iterator/dsc_projected&action=edit)  
[ projected_value_t  ](/w/cpp/iterator/projected_v