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
.
R* r_ = nullptr; /* exposition-only */ |
pointer to the referenced range.
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;
.
t | - | range to reference |
constexpr R& base() const; |
Equivalent to return *r_;
constexpr iterator_t<R> begin() const; |
Equivalent to return ranges::begin(*r_);
constexpr sentinel_t<R> end() const; |
Equivalent to return ranges::end(*r_);
constexpr bool empty() const requires requires { ranges::empty(*r_); }; |
Equivalent to return ranges::empty(*r_);
constexpr auto size() const requires SizedRange<R> { return ranges::size(*r_); } |
constexpr auto data() const requires ContiguousRange<R> { return ranges::data(*r_); } |
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.
template<class R> ref_view(R&) -> ref_view<R>; |
(C++11) | CopyConstructible and CopyAssignable reference wrapper (class template) |
a View that includes all elements of a Range (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