std::ranges::view, std::ranges::enable_view, std::ranges::view_base

< cpp‎ | ranges
定义于头文件 <ranges>
template<class T>
concept view = ranges::range<T> && std::semiregular<T> && ranges::enable_view<T>;
(1)
template<class T>
inline constexpr bool enable_view = std::derived_from<T, ranges::view_base>;
(2)
struct view_base { };
(3)
1) view 概念指定拥有常数时间复制、移动及赋值操作的 range 类型(例如一对迭代器或按需创建其元素的生成器 range 。值得注意的是标准库容器是 range 但不是 view )。
2) enable_view 变量模板用于指示 range 是否为 view 。若类型公开且无歧义地派生自 view_base ,则默认认为它是视图。
用户可对要实现 view 的无 cv 限定的程序定义类型特化 enable_viewtrue ,而对不实现的类型特化为 false 。这些特化应当可用于常量表达式并拥有 const bool 类型。
3)view_base 派生会允许 range 类型实现 view

注解