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> */ 部分確定如下:
- 如果 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。