std::ranges::common_range
ja.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
に変換する
(クラステンプレート) (レンジアダプタオブジェクト) |