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) (depuis C++20)
constexpr auto data ( ) const

requires ranges:: range < const D > &&

std:: contiguous_iterator < ranges:: iterator_t < const D >> ;
(2) (depuis C++20)

L'implémentation par défaut de la fonction membre data() obtient l'adresse indiquée par l'itérateur de début via std::to_address , qui est également l'adresse la plus basse du stockage contigu (impliqué par contiguous_iterator ) référencé par la vue du type dérivé lorsque la vue n'est pas vide.

1) Soit derived égal à static_cast < D & > ( * this ) . Équivalent à return std:: to_address ( ranges:: begin ( derived ) ) ; .
2) Identique à (1) , sauf que derived est static_cast < const D & > ( * this ) .

Table des matières

Valeur de retour

L'adresse désignée par l'itérateur de début.

Notes

Les types dérivés suivants peuvent utiliser l'implémentation par défaut de data() :

Les types suivants sont dérivés de std::ranges::view_interface et ne déclarent pas leur propre fonction membre data() , mais ils ne peuvent pas utiliser l'implémentation par défaut, car leurs types d'itérateur ne satisfont jamais contiguous_iterator :

Exemple

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

Sortie :

C++20!

Voir aussi

(C++17)
obtient le pointeur vers le tableau sous-jacent
(modèle de fonction)
obtient un pointeur vers le début d'une plage contiguë
(objet point de personnalisation)
obtient un pointeur vers le début d'une plage contiguë en lecture seule
(objet point de personnalisation)
(C++20)
obtient un pointeur brut à partir d'un type similaire à un pointeur
(modèle de fonction)