Namespaces
Variants

std::ranges::common_range

cppreference.net에서
 
 
Ranges 라이브러리
Range 어댑터
 
헤더에 정의 <ranges>
template< class T >
concept common_range =
    ranges::range<T> && std::same_as<ranges::iterator_t<T>, ranges::sentinel_t<T>>;
(C++20부터)

이 common_range 개념은 range의 세분화이며, 이에 대해 std::ranges::begin()와 std::ranges::end() 가 동일한 타입을 반환합니다 (예: 모든 표준 라이브러리 컨테이너).

예제

#include <ranges>
struct A
{
    char* begin();
    char* end();
};
static_assert( std::ranges::common_range<A> );
struct B
{
    char* begin();
    bool end();
};  // common_range가 아님: begin/end의 타입이 다름
static_assert( not std::ranges::common_range<B> );
struct C
{
    char* begin();
};  // common_range가 아님, range조차 아님: end()가 없음
static_assert( not std::ranges::common_range<C> );
int main() {}

참고 항목

view 를 common_range 로 변환합니다
(클래스 템플릿) (레인지 어댑터 객체)