FreeBSD Manual Pages
std::ranges::ref_view(3) C++ Standard Libary std::ranges::ref_view(3) NAME std::ranges::ref_view - std::ranges::ref_view Synopsis Defined in header <ranges> template<ranges::range R> requires std::is_object_v<R> (since C++20) class ref_view : public ranges::view_interface<ref_view<R>> ref_view is a view of the elements of some other range. It wraps a reference to that range. Data members ref_view behaves as if it only stores a R* member subobject pointing to the referenced range. The member is shown as r_ here (the name is expo- sition-only). Member functions constructor constructs a ref_view that references to the given range (C++20) (public member function) base returns the references to the referenced range (C++20) (public member function) begin returns the beginning iterator of the referenced range (C++20) (public member function) end returns the sentinel of the referenced range (C++20) (public member function) empty checks whether the referenced range is empty (C++20) (public member function) size returns the size of the referenced sized_range (C++20) (public member function) data returns the pointer to the beginning of the referenced (C++20) contiguous_range (public member function) Inherited from std::ranges::view_interface operator bool Returns whether the derived view is not empty. Pro- vided if (C++20) ranges::empty is applicable to it. (public member function of std::ranges::view_inter- face<D>) front Returns the first element in the derived view. Pro- vided if it (C++20) satisfies forward_range. (public member function of std::ranges::view_inter- face<D>) back Returns the last element in the derived view. Provided if it satisfies (C++20) bidirectional_range and common_range. (public member function of std::ranges::view_inter- face<D>) operator[] Returns the nth element in the derived view. Provided if it satisfies (C++20) random_access_range. (public member function of std::ranges::view_inter- face<D>) std::ranges::ref_view::ref_view template</*different-from*/<ref_view> T> requires std::convertible_to<T, R&> && requires { (since C++20) _FUN(std::declval<T>()); } constexpr ref_view(T&& t); Initializes r_ with std::addressof(static_cast<R&>(std::for- ward<T>(t))). /*different-from*/<T, U> is satisfied if and only if std::re- move_cvref_t<T> and std::remove_cvref_t<U> are not the same type, and overloads of _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; (since C++20) Equivalent to return *r_; std::ranges::ref_view::begin constexpr ranges::iterator_t<R> begin() const; (since C++20) Equivalent to return ranges::begin(*r_); std::ranges::ref_view::end constexpr ranges::sentinel_t<R> end() const; (since C++20) Equivalent to return ranges::end(*r_); std::ranges::ref_view::empty constexpr bool empty() const (since C++20) 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> (since C++20) { return ranges::size(*r_); } std::ranges::ref_view::data constexpr auto data() const requires ranges::contiguous_range<R> (since C++20) { return ranges::data(*r_); } Deduction guides template<class R> (since C++20) ref_view(R&) -> ref_view<R>; Helper templates template<class T> inline constexpr bool enable_borrowed_range<ranges::ref_view<T>> = (since C++20) true; This specialization of std::ranges::enable_borrowed_range makes ref_view satisfy borrowed_range. Example // Run this code #include <ranges> #include <iostream> int main() { const std::string s{"cosmos"}; const std::ranges::take_view tv{s, 3}; const std::ranges::ref_view rv{tv}; std::cout << std::boolalpha << "call empty() : " << rv.empty() << '\n' << "call size() : " << rv.size() << '\n' << "call begin() : " << *rv.begin() << '\n' << "call end() : " << *(rv.end()-1) << '\n' << "call data() : " << rv.data() << '\n' << "call base() : " << rv.base().size() << '\n' // ~> tv.size() << "range-for : "; for (const auto c: rv) { std::cout << c; } std::cout << '\n'; } Output: call empty() : false call size() : 3 call begin() : c call end() : s call data() : cosmos call base() : 3 range-for : cos Defect reports The following behavior-changing defect reports were applied retroac- tively to previously published C++ standards. DR Applied to Behavior as published Cor- rect behavior default constructor was provided as removed along with the P2325R3 C++20 view require- ment must be default_initializable See also reference_wrapper CopyConstructible and CopyAssignable reference wrapper (C++11) (class template) ranges::owning_view a view with unique ownership of some range (C++20) (class template) views::all_t a view that includes all elements of a range views::all (alias template) (range adaptor object) (C++20) http://cppreference.com 2022.07.31 std::ranges::ref_view(3)
NAME | Synopsis | Member functions | Parameters | Example | Output: | See also
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::ranges::ref_view&sektion=3&manpath=FreeBSD+Ports+15.0>
