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

来自cppreference.com
< cpp‎ | container‎ | mdspan
 
 
 
 
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 起)

返回 mdspan 的第 indices 个元素的引用。

1) 等价于 return acc_.access(ptr_, map_(static_cast<index_type>(std::move(indices))...));
只有在以下情况下,此重载才会参与重载决议:
Iextents_type::index-cast(std::move(indices))。当 I 不是 extents() 中的多维索引,即 map_(I) < map_.required_span_size()false 时,行为未定义。
2,3)P 为形参包,当std::is_same_v<make_index_sequence<rank()>, index_sequence<P...>>true 时,该运算符等价于 return operator[](extents_type::index-cast(std::as_const(indices[P]))...);
只有在以下情况下,此重载才会参与重载决议:

参数

indices - 要访问的元素的索引

返回值

元素的引用。

示例

缺陷报告

下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。

缺陷报告 应用于 出版时的行为 正确行为
LWG 3974 C++23 重载 (2,3) 没有应用 extents_type::index-cast 会应用

参阅