std::ranges::ref_view
来自cppreference.com
                    
                                        
                    
                    
                                                            
                    |   定义于头文件  <ranges>
  | 
||
|   template<ranges::range R>     requires std::is_object_v<R>  | 
(C++20 起) | |
ref_view 是某个其他 range 的元素的 view 。它包装到该 range 的引用。
辅助模板
|   template<class T> inline constexpr bool enable_borrowed_range<ranges::ref_view<T>> = true;  | 
||
std::ranges::enable_borrowed_range 的此特化使得 ref_view 满足 borrowed_range 。
数据成员
std::ranges::ref_view::r_
|   R* r_ = nullptr; /* exposition-only */  | 
||
指向被引用范围的指针
成员函数
std::ranges::ref_view::ref_view
|   constexpr ref_view() noexcept = default;  | 
(1) | |
|   template<__NotSameAs<ref_view> T>     requires std::convertible_to<T, R&> && requires { _FUN(std::declval<T>()); }  | 
(2) | |
名称 __NotSameAs 与 _FUN 仅为说明。 __NotSameAs<T, U> 当且仅当 !std::same_as<std::remove_cvref_t<T>, std::remove_cvref_t<U>> 才得到满足。函数 _FUN 声明为 void _FUN(R&); void _FUN(R&&) = delete; 。
参数
| t | - | 要引用的范围 | 
std::ranges::rev_view::base
|   constexpr R& base() const;  | 
||
等价于 return *r_;
std::ranges::ref_view::begin
|   constexpr ranges::iterator_t<R> begin() const;  | 
||
等价于 return ranges::begin(*r_);
std::ranges::ref_view::end
|   constexpr ranges::sentinel_t<R> end() const;  | 
||
等价于 return ranges::end(*r_);
std::ranges::ref_view::empty
|   constexpr bool empty() const requires requires { ranges::empty(*r_); };  | 
||
等价于 return ranges::empty(*r_);
std::ranges::ref_view::size
|   constexpr auto size() const     requires ranges::sized_range<R>  | 
||
std::ranges::ref_view::data
|   constexpr auto data() const     requires ranges::contiguous_range<R>  | 
||
推导指引
|   template<class R> ref_view(R&) -> ref_view<R>;  | 
||
示例
| 本节未完成 原因:暂无示例  | 
参阅
|    (C++11)  | 
   可复制构造 (CopyConstructible) 且可复制赋值 (CopyAssignable) 的引用包装器   (类模板)  | 
|   包含 range 的所有元素的 view  (别名模板) (范围适配器对象)  |