Namespaces
Variants

nothrow-input-iterator, nothrow-forward-iterator, nothrow-bidirectional-iterator, no-throw-input-range, nothrow-random-access-iterator

From cppreference.com
 
 
Algorithm library
Constrained algorithms and algorithms on ranges (C++20)
Constrained algorithms, e.g. ranges::copy, ranges::sort, ...
Non-modifying sequence operations    
Batch operations
(C++17)
Search operations
Modifying sequence operations
Copy operations
(C++11)
(C++11)
Swap operations
Transformation operations
Generation operations
Removing operations
Order-changing operations
(until C++17)(C++11)
(C++20)(C++20)
Sampling operations
(C++17)

Sorting and related operations
Partitioning operations
(C++11)    

Sorting operations
Binary search operations
(on partitioned ranges)
Set operations (on sorted ranges)
Merge operations (on sorted ranges)
Heap operations
Minimum/maximum operations
(C++11)
(C++17)
Lexicographical comparison operations
Permutation operations


 
 
template< class I >
concept /*nothrow-input-iterator*/ =
    std::input_iterator<I> &&
    std::is_lvalue_reference_v<std::iter_reference_t<I>> &&
    std::same_as<std::remove_cvref_t<std::iter_reference_t<I>>,
                 std::iter_value_t<I>>;
(1) (exposition only*)
template< class I >
concept /*nothrow-forward-iterator*/ =
    /*nothrow-input-iterator*/<I> &&
    std::forward_iterator<I> &&
    /*nothrow-sentinel-for*/<I, I>;
(2) (exposition only*)
template< class I >
concept /*nothrow-bidirectional-iterator*/ =
    /*nothrow-forward-iterator*/<I> &&
    std::bidirectional_iterator<I>;
(3) (since C++26)
(exposition only*)
template< class I >
concept /*nothrow-random-access-iterator*/ =
    /*nothrow-bidirectional-iterator*/<I> &&
    std::random_access_iterator<I> &&
    /*nothrow-sized-sentinel-for*/<I, I>;
(4) (since C++26)
(exposition only*)

These exposition-only concepts specify that no exceptions are thrown from operations required by the specialized <memory> algorithms on iterators.

For the definitions of /*nothrow-sentinel-for*/ and /*nothrow-sized-sentinel-for*/, see this page.

Semantic requirements

1) A type I models nothrow-input-iterator only if no exceptions are thrown from increment, copy construction, move construction, copy assignment, move assignment, or indirection through valid iterators of type I.
3) A type I models nothrow-bidirectional-iterator only if no exceptions are thrown from decrementing valid iterators of type I.
4) A type I models nothrow-random-access-iterator only if no exceptions are thrown from comparisons of valid iterators of type I, or the -, +, -=, +=, [] operators on valid values of type I and std::iter_difference_t<I>.

Notes

These concepts allow some operations on iterators to throw exceptions.

See also

specifies that a type is an input iterator, that is, its referenced values can be read and it can be both pre- and post-incremented
(concept) [edit]
specifies that an input_iterator is a forward iterator, supporting equality comparison and multi-pass
(concept) [edit]
specifies that a forward_iterator is a bidirectional iterator, supporting movement backwards
(concept) [edit]
specifies that a bidirectional_iterator is a random-access iterator, supporting advancement in constant time and subscripting
(concept) [edit]