FreeBSD Manual Pages
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)
NAME | Synopsis | Parameters | Return value | Notes | Example | Output: | See also
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>
