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

FreeBSD Manual Pages

  
 
  

home | help
std::ranges...erface::data(3) C++ Standard Libarystd::ranges...erface::data(3)

NAME
       std::ranges::view_interface::data - std::ranges::view_interface::data

Synopsis
	  constexpr  auto  data()					   (1)
       (since C++20)
	      requires std::contiguous_iterator<ranges::iterator_t<D>>;
	  constexpr auto data()	const

	      requires ranges::range<const D>  &&			   (2)
       (since C++20)

		  std::contiguous_iterator<ranges::iterator_t<const D>>;

	  The default implementation of	data() member function obtains the ad-
       dress denoted by
	  the beginning	iterator via std::to_address, which is also the	lowest
       address of the
	  contiguous  storage  (implied	 by contiguous_iterator) referenced by
       the view	of the
	  derived type when the	view is	not empty.

	  1) Let derived be static_cast<D&>(*this). Equivalent to return
	  std::to_address(ranges::begin(derived));.
	  2) Same as (1), except that derived is static_cast<const D&>(*this).

Parameters
	  (none)

Return value
	  The address denoted by the beginning iterator.

Notes
	  Following derived  types  may	 use  the  default  implementation  of
       data():

	    * std::ranges::common_view
	    * std::ranges::drop_view
	    * std::ranges::drop_while_view
	    * std::ranges::ref_view
	    * std::ranges::subrange
	    * std::ranges::take_view
	    * std::ranges::take_while_view

	  Following  types are derived from std::ranges::view_interface	and do
       not declare
	  their	own data() member function, but	they cannot  use  the  default
       implementation,
	  because their	iterator types never satisfy contiguous_iterator:

	    * std::ranges::basic_istream_view
	    * std::ranges::elements_view
	    * std::ranges::filter_view
	    * std::ranges::iota_view
	    * std::ranges::join_view
	    * std::ranges::lazy_split_view
	    * std::ranges::reverse_view
	    * std::ranges::split_view
	    * std::ranges::transform_view

Example
       // Run this code

	#include <array>
	#include <iostream>
	#include <ranges>
	#include <string_view>

	int main() {
	    constexpr std::string_view str { "Hello, C++20!" };
	    std::cout << (str |	std::views::drop(7)).data() << '\n';
	    constexpr static std::array	a { 1,2,3,4,5 };
	    constexpr auto v { a | std::views::take(3) };
	    static_assert( &a[0] == v.data() );
	}

Output:
	C++20!

See also
	  data		obtains	the pointer to the underlying array
	  (C++17)	(function template)
	  ranges::data	 obtains  a  pointer  to the beginning of a contiguous
       range
	  (C++20)	(customization point object)
	  ranges::cdata	obtains	a pointer to the beginning of a	read-only con-
       tiguous range
	  (C++20)	(customization point object)
	  to_address	obtains	a raw pointer from a pointer-like type
	  (C++20)	(function template)

http://cppreference.com		  2024.06.10	 std::ranges...erface::data(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::ranges::view_interface::data&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help