GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
std::ranges::ref_view(3) C++ Standard Libary std::ranges::ref_view(3)

std::ranges::ref_view - std::ranges::ref_view


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 exposition-only).


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. Provided if
(C++20) ranges::empty is applicable to it.
(public member function of std::ranges::view_interface<D>)
front Returns the first element in the derived view. Provided if it
(C++20) satisfies forward_range.
(public member function of std::ranges::view_interface<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_interface<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_interface<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::forward<T>(t))).


/*different-from*/<T, U> is satisfied if and only if std::remove_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;.


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.

// 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';
}


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 retroactively to
previously published C++ standards.


DR Applied to Behavior as published Correct behavior
default constructor was provided as removed along with the
P2325R3 C++20 view requirement
must be default_initializable


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)

2022.07.31 http://cppreference.com

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.