std::experimental::ranges::View
来自cppreference.com
< cpp | experimental | ranges
在标头 <experimental/ranges/range> 定义
|
||
template< class T > concept bool View = Range<T> && Semiregular<T> && /* view-predicate<T> */; |
(范围 TS) | |
template< class T > struct enable_view {}; |
(范围 TS) | |
struct view_base {}; |
(范围 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。