ranges_common_range
ranges_common_range (공통 범위 개념)
ranges::common_range은 std::ranges::begin()과 std::ranges::end()가 같은 타입을 반환하는 range의 정제(개념)예요. C++20부터 사용할 수 있어요.
출처: cppreference
본문
<ranges> 헤더에 정의되어 있고, 시그니처는 다음과 같아요.
template< class T >
concept common_range =
ranges::range<T> && std::same_as<ranges::iterator_t<T>, ranges::sentinel_t<T>>;
(since C++20)
common_range 개념은 std::ranges::begin()과 std::ranges::end()가 같은 타입을 반환하는 range의 정제예요 (예: 모든 표준 라이브러리 컨테이너).
예제 (Example)
이 코드를 실행해 봐요.
#include <ranges>
struct A
{
char* begin();
char* end();
};
static_assert( std::ranges::common_range<A> );
struct B
{
char* begin();
bool end();
}; // not a common_range: begin/end have different types