std::ranges::ref_view_C++中文网
| template<ranges::range R> requires std::is_object_v<R> |
(C++20 起) | |
ref_view 是某个其他 range 的元素的 view 。它包装到该 range 的引用。
辅助模板
| template<class T> |
||
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; 。
参数
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 |
||
等价于 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> |
||