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
需具备常数时间复杂度的复制、移动及赋值操作。
/* view-predicate<T> */ 部分的概念按以下方式确定:
- 若 限定标识符 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 。