C++ 命名要求: AccessorPolicy (自 C++23 起)
来自 cppreference.cn
AccessorPolicy 定义了如何从给定的数据句柄访问元素及其索引。它在 std::mdspan 中用作策略,以指定使用底层 1D 索引访问元素的引用。
目录 |
[编辑] 要求
如果类型 A
建模 copyable
,并且以下条件为 true,则类型 A
满足 AccessorPolicy。
- std::is_nothrow_move_constructible_v<A>
- std::is_nothrow_move_assignable_v<A>
- std::is_nothrow_swappable_v<A>
并且,给定以下类型和值,下表所示的表达式是有效的,并具有指示的语义
[编辑] 图例
类型 | 定义 |
A
|
accessor policy 类型 |
OP
|
offset policy 类型 |
值 | 定义 |
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 访问器的引用的复共轭 (类模板) |