Namespaces
Variants

std::ranges::view_interface<D>:: data

From cppreference.net
Ranges library
Range adaptors
constexpr auto data ( )
requires std:: contiguous_iterator < ranges:: iterator_t < D >> ;
(1) (начиная с C++20)
constexpr auto data ( ) const

requires ranges:: range < const D > &&

std:: contiguous_iterator < ranges:: iterator_t < const D >> ;
(2) (начиная с C++20)

Реализация по умолчанию функции-члена data() получает адрес, обозначаемый начальным итератором, через std::to_address , который также является наименьшим адресом непрерывного хранилища (подразумеваемого contiguous_iterator ), на которое ссылается представление производного типа, когда представление не пусто.

1) Пусть derived будет static_cast < D & > ( * this ) . Эквивалентно return std:: to_address ( ranges:: begin ( derived ) ) ; .
2) То же, что и (1) , за исключением того, что derived является static_cast < const D & > ( * this ) .

Содержание

Возвращаемое значение

Адрес, обозначаемый начальным итератором.

Примечания

Следующие производные типы могут использовать реализацию по умолчанию для data() :

Следующие типы являются производными от std::ranges::view_interface и не объявляют собственную функцию-член data() , но они не могут использовать реализацию по умолчанию, поскольку их типы итераторов никогда не удовлетворяют требованиям contiguous_iterator :

Пример

#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() );
}

Вывод:

C++20!

Смотрите также

(C++17)
получает указатель на базовый массив
(шаблон функции)
получает указатель на начало непрерывного диапазона
(объект точки настройки)
получает указатель на начало диапазона только для чтения
(объект точки настройки)
(C++20)
получает необработанный указатель из указательноподобного типа
(шаблон функции)