Espacios de nombres
Variantes
Acciones

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

De cppreference.com
 
 
Biblioteca de rangos
Adaptadores de rangos
 
std::ranges::view_interface
Funciones miembro
(C++20)
data
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
 
constexprauto data()
    requires std::contiguous_iterator<ranges::iterator_t<D>>;
(1) (desde C++20)
constexprbool 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 derivedstatic_cast<D&>(*this). Es equivalente a returnstd::to_address(ranges::begin(derived));.
2) Igual que (1), excepto que derived es static_cast<const D&>(*this).

Contenido

[editar]Parámetros

(Ninguno)

[editar]Valor de retorno

La dirección denotada por el iterador al comienzo.

[editar]Notas

Los siguientes tipos derivados pueden usar la implementación por defecto de 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

Los siguientes tipos se derivan de std::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:

  • 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

[editar]Ejemplo

#include <array>#include <iostream>#include <ranges>#include <string_view>   int main(){constexprstd::string_view str {"Hola, C++20!"};std::cout<<(str | std::views::drop(6)).data()<<'\n';constexprstaticstd::array a {1,2,3,4,5};constexprauto v { a | std::views::take(3)}; static_assert(&a[0]== v.data());}

Salida:

C++20!

[editar]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]
(C++20)
Obtiene un puntero sin formato de un tipo similar a un puntero.
(plantilla de función)[editar]
close