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 |
(未指明),但类型不必是 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 元素的方式的类型 (类模板) |