C++ 命名需求: AccessorPolicy (自 C++23 起)
来自 cppreference.com
AccessorPolicy 定义了如何从给定的数据句柄访问元素以及如何访问这些元素和索引。它在 std::mdspan 中用作策略,以指定使用底层 1D 索引访问元素的引用。
内容 |
[编辑] 需求
如果类型 A
满足 AccessorPolicy,则它模拟 copyable
,并且以下内容为 true
- std::is_nothrow_move_constructible_v<A>
- std::is_nothrow_move_assignable_v<A>
- std::is_nothrow_swappable_v<A>
此外,给定以下类型和值,下表中显示的表达式有效且具有指示的语义。
[编辑] 图例
类型 | 定义 |
A
|
访问器策略类型 |
OP
|
偏移策略类型 |
值 | 定义 |
a | 类型(可能经过常量限定)A 的值 |
p | 类型(可能经过常量限定)A::data_handle_type 的值 |
i, j, n | 类型 std::size_t 的值 |
[编辑] 成员类型
名称 | 类型 | 需求 |
---|---|---|
A::element_type |
(未指定) |
|
A::data_handle_type |
(未指定) 但该类型不必是 element_type* |
|
A::reference |
(未指定) 但该类型不必是 element_type& |
|
A::offset_policy |
OP |
|
[编辑] 成员函数
表达式 | 返回值类型 | 语义 |
---|---|---|
a.access(p, i) | typename A::reference |
|
a.offset(p, i) | typename A::offset_policy::data_handle_type |
|
- ↑ 对于给定的数据句柄和访问器,索引范围
[
0,
N)
是一个可访问范围,如果对于范围中的每个索引,access 成员函数都会生成对元素的有效引用。
[编辑] 另请参阅
(C++23) |
用于对 mdspan 元素进行索引访问的类型(类模板) |