Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
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.

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
	  cbegin	 returns  a  constant iterator to the beginning	of the
       range.
	  (C++23)	(public	member	function  of  std::ranges::view_inter-
       face<D>)
	  cend		 returns  a  sentinel for the constant iterator	of the
       range.
	  (C++23)	(public	member	function  of  std::ranges::view_inter-
       face<D>)
	  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 n^th 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		(since C++20)
	      requires ranges::sized_range<R>;

	  Equivalent to	return ranges::size(*r_);.

       std::ranges::ref_view::data

	  constexpr auto data()	const		     (since C++20)
	      requires ranges::contiguous_range<R>;

	  Equivalent to	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 <iostream>
	#include <ranges>

	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		  2024.06.10	      std::ranges::ref_view(3)

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.1.quarterly>

home | help