std::experimental::ranges:: View
From cppreference.net
<
cpp
|
experimental
|
ranges
|
ヘッダーで定義
<experimental/ranges/range>
|
||
|
template
<
class
T
>
concept bool View = Range < T > && Semiregular < T > && /* view-predicate<T> */ ; |
(ranges TS) | |
|
template
<
class
T
>
struct enable_view { } ; |
(ranges TS) | |
|
struct
view_base
{
}
;
|
(ranges TS) | |
概念
View<T>
は、半正則範囲
T
が定数時間でのコピー、移動、代入操作を持つことを指定します。
The /* view-predicate<T> */ 部分の概念は以下のように決定されます:
- qualified-id ranges:: enable_view < T > :: type が有効で型を表す場合、 ranges:: enable_view < T > :: type :: value ;
- そうでない場合、 std:: is_base_of_v < ranges:: view_base , T > が true の場合、 true ;
-
そうでない場合、
Tが std::initializer_list 、 std::set 、 std::multiset 、 std::unordered_set または std::unordered_multiset の特殊化の場合、 false ; -
そうでない場合、
Tとconst Tの両方がRangeを満たし、かつ ranges :: reference_t < ranges:: iterator_t < T >> の型が ranges :: reference_t < ranges:: iterator_t < const T >> の型と異なる場合、 false ; - それ以外の場合、 true .