std::mergeable
std::mergeable (병합 가능 컨셉)
Comp가 부과하는 엄밀 약순서에 따라 두 입력 범위를 하나의 출력 범위로 병합하는 알고리즘에 대한 요구사항을 명세하는 컨셉이에요. C++20부터 있어요.
출처: cppreference
본문
<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>>;
mergeable 컨셉은 Comp가 부과하는 엄밀 약순서에 따라 두 입력 범위를 하나의 출력 범위로 병합하는 알고리즘에 대한 요구사항을 명세해요. 각 입력 범위에 projection을 적용한 값들로 엄밀 약순서를 판정하고, 두 입력을 출력으로 간접 복사할 수 있어야 해요.
의미 요구사항
mergeable은 그것이 포함하는 모든 컨셉이 모델링될 때만 모델링돼요.
예제
#include <iterator>
#include <vector>
#include <concepts>
int main()
{
static_assert(std::mergeable<std::vector<int>::iterator,
std::vector<int>::iterator,
std::vector<int>::iterator>);
}