std::ranges::common_range
cppreference.net에서
| 헤더에 정의 <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
로 변환합니다
(클래스 템플릿) (레인지 어댑터 객체) |