std::ranges::ref_view
| Defined in header <ranges> | ||
|---|---|---|
| template<Range R>
    requires std::is_object_v<R>
class ref_view : public ranges::view_interface<ref_view<R>> | (since C++20) | 
ref_view is a View of the elements of some other Range. It wraps a reference to that Range.
Data members
std::ranges::ref_view::r_
| R* r_ = nullptr; /* exposition-only */ | 
pointer to the referenced range.
Member functions
std::ranges::ref_view::ref_view
| constexpr ref_view() noexcept = default; | (1) | |
| template<__NotSameAs<ref_view> T>
    requires /* see below */
constexpr ref_view(T&& t); | (2) | 
__NotSameAs is an exposition-only helper concept.
The expression in the requires-clause of (2) is equivalent to ConvertibleTo<T, R&> && requires { FUN(declval<T>()); }, where the exposition-only functions FUN are declared as void FUN(R&); void FUN(R&&) = delete;.
Parameters
| t | - | range to reference | 
std::ranges::rev_view::base
| constexpr R& base() const; | 
Equivalent to return *r_;
std::ranges::ref_view::begin
| constexpr iterator_t<R> begin() const; | 
Equivalent to return ranges::begin(*r_);
std::ranges::ref_view::end
| constexpr sentinel_t<R> end() const; | 
Equivalent to return ranges::end(*r_);
std::ranges::ref_view::empty
| constexpr bool empty() const
    requires requires { ranges::empty(*r_); }; | 
Equivalent to return ranges::empty(*r_);
std::ranges::ref_view::size
| constexpr auto size() const
    requires SizedRange<R>
{ return ranges::size(*r_); } | 
std::ranges::ref_view::data
| constexpr auto data() const
    requires ContiguousRange<R>
{ return ranges::data(*r_); } | 
Non-member functions
begin, end(std::ranges::ref_view)
| friend constexpr iterator_t<R> begin(ref_view r); | (1) | |
| friend constexpr sentinel_t<R> end(ref_view r); | (2) | 
return r.begin();
return r.end();
These functions are not visible to ordinary unqualified or qualified lookup, and can only be found by argument-dependent lookup when std::ranges::ref_view<R> is an associated class of the arguments.
Deduction guides
| template<class R> ref_view(R&) -> ref_view<R>; | 
Example
See also
| (C++11) | CopyConstructible and CopyAssignable reference wrapper (class template) | 
| a Viewthat includes all elements of aRange(alias template) (range adaptor object) | 
    © cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
    http://en.cppreference.com/w/cpp/ranges/ref_view