Namespaces
Variants

std::ranges:: common_range

From cppreference.net
Ranges library
Range adaptors
헤더 파일에 정의됨 <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 로 변환합니다
(클래스 템플릿) (레인지 어댑터 객체)