Difference between revisions of "cpp/ranges/ref view"
D41D8CD98F (Talk | contribs) m (remove soft hyphen) |
m (→Helper templates: ~) |
||
Line 13: | Line 13: | ||
{{tt|ref_view}} is a {{lconcept|view}} of the elements of some other {{lconcept|range}}. It wraps a reference to that {{tt|range}}. | {{tt|ref_view}} is a {{lconcept|view}} of the elements of some other {{lconcept|range}}. It wraps a reference to that {{tt|range}}. | ||
− | ===Helper | + | ===Helper templates=== |
{{ddcl|1= | {{ddcl|1= | ||
template<class T> | template<class T> |
Revision as of 23:59, 21 June 2020
Defined in header <ranges>
|
||
template<ranges::range R> requires std::is_object_v<R> |
(since C++20) | |
ref_view
is a view
of the elements of some other range
. It wraps a reference to that range
.
Contents |
Helper templates
template<class T> inline constexpr bool enable_borrowed_range<ranges::ref_view<T>> = true; |
||
This specialization of std::ranges::enable_borrowed_range makes ref_view
satisfy borrowed_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 std::convertible_to<T, R&> && requires { _FUN(std::declval<T>()); } |
(2) | |
Names __NotSameAs
and _FUN
are exposition-only. __NotSameAs<T, U>
is satisfied if and only if !std::same_as<std::remove_cvref_t<T>, std::remove_cvref_t<U>>. The function _FUN
are declared as void _FUN(R&); void _FUN(R&&) = delete;.
Parameters
t | - | range to reference |
std::ranges::ref_view::base
constexpr R& base() const; |
||
Equivalent to return *r_;
std::ranges::ref_view::begin
constexpr ranges::iterator_t<R> begin() const; |
||
Equivalent to return ranges::begin(*r_);
std::ranges::ref_view::end
constexpr ranges::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 ranges::sized_range<R> |
||
std::ranges::ref_view::data
constexpr auto data() const requires ranges::contiguous_range<R> |
||
Deduction guides
template<class R> ref_view(R&) -> ref_view<R>; |
||
Example
This section is incomplete Reason: no example |
See also
(C++11) |
CopyConstructible and CopyAssignable reference wrapper (class template) |
(C++20) |
a view that includes all elements of a range (alias template) (range adaptor object) |