std::mergeable

From cppreference.com
< cpp‎ | iterator
 
 
Iterator library
Iterator concepts
Iterator primitives
Algorithm concepts and utilities
Indirect callable concepts
Common algorithm requirements
(C++20)
mergeable
(C++20)
(C++20)
Utilities
(C++20)
Iterator adaptors
Stream iterators
Iterator customization points
Iterator operations
(C++11)
(C++11)
Range access
(C++11)(C++14)
(C++11)(C++14)
(C++17)(C++20)
(C++14)(C++14)
(C++14)(C++14)
(C++17)
(C++17)
 
Defined in header <iterator>
template< class I1, class I2, class Out, class Comp = ranges::less,

          class Proj1 = std::identity, class Proj2 = std::identity >
concept mergeable =
    std::input_iterator<I1> &&
    std::input_iterator<I2> &&
    std::weakly_incrementable<Out> &&
    std::indirectly_copyable<I1, Out> &&
    std::indirectly_copyable<I2, Out> &&
    std::indirect_strict_weak_order<Comp,
                                    std::projected<I1, Proj1>,

                                    std::projected<I2, Proj2>>;
(since C++20)

The mergeable concept specifies the requirements for algorithms that merge two input ranges into a single output range according to the strict weak ordering imposed by Comp.

Semantic requirements

mergeable is modeled only if all concepts it subsumes are modeled.

See also

merges two sorted ranges
(niebloid)
computes the union of two sets
(niebloid)
computes the intersection of two sets
(niebloid)
computes the difference between two sets
(niebloid)
computes the symmetric difference between two sets
(niebloid)