Espacios de nombres
Variantes

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

De cppreference.com
 
 
Biblioteca de rangos
Adaptadores de rangos
 
std::ranges::view_interface
Funciones miembro
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
 
<tbody> </tbody>
constexpr auto data() requires std::contiguous_iterator<ranges::iterator_t<D>>;
(1) (desde C++20)
constexpr bool data() const requires std::contiguous_iterator<ranges::iterator_t<const D>>;
(2) (desde C++20)

La implementación por defecto de la función miembro data() obtiene la dirección denotada por el iterador al comienzo vía std::to_address, que también es la dirección más baja del almacenamiento contiguo (implícito por contiguous_iterator) al que hace referencia la vista del tipo derivado cuando la vista no está vacía.

1) Sea derived static_cast<D&>(*this). Es equivalente a return std::to_address(ranges::begin(derived));.
2) Igual que (1), excepto que derived es static_cast<const D&>(*this).

Parámetros

(Ninguno)

Valor de retorno

La dirección denotada por el iterador al comienzo.

Notas

Los siguientes tipos derivados pueden usar la implementación por defecto de data():

  • 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

Los siguientes tipos se derivan de ranges::view_interface y no declaran su propia función miembro data(), pero no pueden usar la implementación por defecto, ya que sus tipos iterador nunca satisfacen contiguous_iterator:

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

Ejemplo

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

int main() {
    constexpr std::string_view str { "Hola, C++20!" };
    std::cout << (str | std::views::drop(6)).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() );
}

Salida:

C++20!

Véase también

(C++17)
Obtiene el puntero al array subyacente.
(plantilla de función) [editar]
Obtiene un puntero al principio de un rango contiguo
(objeto punto de personalización) [editar]
Obtiene un puntero al inicio de un rango contiguo de solo lectura
(objeto punto de personalización) [editar]
Obtiene un puntero sin formato de un tipo similar a un puntero.
(plantilla de función) [editar]