ranges_contiguous_range

ranges_contiguous_range (연속 범위 개념)

ranges::contiguous_rangeranges::begin이 contiguous_iterator를 모델링하는 값을 반환하고 커스터마이제이션 포인트 ranges::data를 사용할 수 있는 range의 정제(개념)예요. C++20부터 사용할 수 있어요.

출처: cppreference

본문

<ranges> 헤더에 정의되어 있고, 시그니처는 다음과 같아요.

template< class T >
concept contiguous_range =
    ranges::random_access_range<T> &&
    std::contiguous_iterator<ranges::iterator_t<T>> &&
    requires(T& t) {
        { ranges::data(t) } ->
            std::same_as<std::add_pointer_t<ranges::range_reference_t<T>>>;
    };

(since C++20)

contiguous_range 개념은 ranges::begin이 contiguous_iterator를 모델링하는 값을 반환하고 커스터마이제이션 포인트 ranges::data를 사용할 수 있는 range의 정제예요.

의미 요구사항 (Semantic requirements)

decltype((e))가 T&인 표현식 e가 주어졌을 때 T는 다음을 만족할 때만 contiguous_range를 모델링해요:

  • ranges::data(e)의 결과가 [ranges::begin(e), ranges::end(e))와 같은 요소를 가리키고,
  • boost::interprocess 같은 일부 시나리오에서처럼 디버깅 위해 임의의 표현식과 비교 가능한 구현에서도 참조가 올바른 요소를 가리켜요.

참고 (Notes)

std::vector, std::array, C 배열 등이 contiguous_range예요. std::deque, std::list는 아니에요.

더 알아보기 (Learn more)

cppreference