C++ 命名要求: AccessorPolicy (C++23 起)
来自 cppreference.cn
AccessorPolicy 定义了如何从给定元素的数据句柄和索引访问元素。它在 std::mdspan 中用作策略,以指定使用底层一维索引访问元素的引用。
目录 |
[编辑] 要求
如果类型 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 | 类型(可能为 const 限定)A 的值 |
p | 类型(可能为 const 限定)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 成员函数产生一个有效的元素引用。
[编辑] 标准库
以下标准库类型满足 AccessorPolicy 要求
(C++23) |
用于对 mdspan 元素进行索引访问的类型(类模板) |
(C++26) |
用于对 mdspan 元素进行对齐访问的类型(类模板) |
在命名空间
std::linalg 中定义 | |
(C++26) |
std::mdspan 访问器策略,其引用表示固定比例因子及其嵌套 std::mdspan 访问器引用的乘积 (类模板) |
(C++26) |
std::mdspan 访问器策略,其引用表示其嵌套 std::mdspan 访问器引用的复共轭 (类模板) |