C++ 具名要求:访问器策略(AccessorPolicy) (C++23 起)
来自cppreference.com
访问器策略(AccessorPolicy) 定义了从给定的指向元素的数据把柄和一个索引,如何访问元素。它被用作 std::mdspan 的一项策略,以指定如何使用底层一维索引访问元素的引用。
目录 |
[编辑]要求
如果类型 A
实现了 copyable
,并且以下各项均为 true,那么它满足访问器策略(AccessorPolicy) :
- 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 | 未指定[1] |
|
A::reference | 未指定[2] |
|
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 访问器的引用的复共轭 (类模板) |