Namespaces
Variants

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

From cppreference.net
template < class ... OtherIndexTypes >
constexpr reference operator [ ] ( OtherIndexTypes... indices ) const ;
(1) (начиная с C++23)
template < class OtherIndexType >

constexpr reference operator [ ]

( std:: span < OtherIndexType, rank ( ) > indices ) const ;
(2) (начиная с C++23)
template < class OtherIndexType >

constexpr reference operator [ ]

( const std:: array < OtherIndexType, rank ( ) > & indices ) const ;
(3) (начиная с C++23)

Возвращает ссылку на indices элемент mdspan.

1) Эквивалентно return acc_  . access ( ptr_ , map_  ( static_cast < index_type > ( std :: move ( indices ) ) ... ) ) ; .
Эта перегрузка участвует в разрешении перегрузки только если все следующие значения true :

Если extents_type :: index-cast  ( std :: move ( indices ) ) не является многомерным индексом в extents ( ) , поведение не определено.

(до C++26)

Если extents_type :: index-cast  ( std :: move ( indices ) ) не является многомерным индексом в extents ( ) :

  • Если реализация защищённая (hardened) , происходит нарушение контракта . Более того, если обработчик нарушения контракта возвращает управление при семантике оценки "observe", поведение не определено.
  • Если реализация не защищённая, поведение не определено.
(начиная с C++26)
2,3) Пусть P будет пакетом параметров таким, что std:: is_same_v < std:: make_index_sequence < rank ( ) > ,
std:: index_sequence < P... >>
является true , эквивалентно return operator [ ] ( extents_type :: index-cast  ( std:: as_const ( indices [ P ] ) ) ... ) ; .
Эта перегрузка участвует в разрешении перегрузки только если все следующие значения true :

Содержание

Параметры

indices - индексы элемента для доступа

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

Ссылка на элемент.

Пример

Отчеты о дефектах

Следующие отчеты об изменениях поведения, влияющие на дефекты, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Применяется к Поведение в опубликованной версии Корректное поведение
LWG 3974 C++23 перегрузки (2,3) не применяли extents_type:: index-cast применяют

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