Espacios de nombres
Variantes

std::mdspan<T,Extents,LayoutPolicy,AccessorPolicy>::operator[]

De cppreference.com
 
 
 
 
<tbody> </tbody>
template< class... OtherIndexTypes > constexpr reference operator[]( OtherIndexTypes... indices ) const;
(1) (desde C++23)
template< class OtherIndexType > constexpr reference operator[] ( std::span<OtherIndexType, rank()> indices ) const;
(2) (desde C++23)
template< class OtherIndexType > constexpr reference operator[] ( const std::array<OtherIndexType, rank()>& indices ) const;
(3) (desde C++23)

Devuelve una referencia al indices-ésimo elemento del mdspan.

1) Equivalente a return acc_.access(ptr_, map_(static_cast<index_type>(std::move(indices))...));.
Esta sobrecarga participa en la resolución de sobrecarga sólo si:
  • (std::is_convertible_v<OtherIndexTypes, index_type> && ...) es true,
  • (std::is_nothrow_constructible_v<index_type, OtherIndexTypes> && ...) es true, y
  • sizeof...(OtherIndexTypes) == rank() es true.
Sea I extents_type::index-cast(std::move(indices)). Entonces el comportamiento no está definido si I no es un índice multidimensional en extents(), p. ej., map_(I) < map_.required_span_size() es false.
2,3) Sea P un paquete de parámetros tal que std::is_same_v<make_index_sequence<rank()>, index_sequence<P...>> es true, entonces el operador es equivalente a return operator[](extents_type::index-cast(std::as_const(indices[P]))...);.
Esta sobrecarga participa en la resolución de sobrecarga sólo si:
  • std::is_convertible_v<const OtherIndexType&, index_type> es true, y
  • std::is_nothrow_constructible_v<index_type, const OtherIndexType&> es true.

Parámetros

indices - Los índices del elemento a acceder.

Valor de retorno

Una referencia al elemento.

Ejemplo

Informes de defectos

Los siguientes informes de defectos de cambio de comportamiento se aplicaron de manera retroactiva a los estándares de C++ publicados anteriormente.

ID Aplicado a Comportamiento según lo publicado Comportamiento correcto
LWG 3974 C++23 Las sobrecargas (2,3) no aplicaban extents_type::index-cast. Lo aplican.

Véase también