命名空间
变体
操作

C++ 命名需求: AccessorPolicy (自 C++23 起)

来自 cppreference.com
 
 
C++ 命名需求
 

AccessorPolicy 定义了如何从给定的数据句柄访问元素以及如何访问这些元素和索引。它在 std::mdspan 中用作策略,以指定使用底层 1D 索引访问元素的引用。

内容

[编辑] 需求

如果类型 A 满足 AccessorPolicy,则它模拟 copyable,并且以下内容为 true

此外,给定以下类型和值,下表中显示的表达式有效且具有指示的语义。

[编辑] 图例

类型 定义
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
  • 满足 AccessorPolicy 的要求
  • std::constructible_from<OP, const A&>true
  • typename OP​::​element_typetypename A​::​element_type 是相同类型

[编辑] 成员函数

表达式 返回值类型 语义
a.access(p, i) typename A::reference
a.offset(p, i) typename A::offset_policy::data_handle_type
  • 一个值 q,这样对于 b 作为 A::offset_policy(a),以及任何整数 n,对于其 [0n)pa 的可访问范围[note 1]
  • [0n - i)qb 的可访问范围;并且
  • b.access(q, j) 提供对与 a.access(p, i + j) 相同元素的访问,对于范围 [0n - i) 中的每个 j
  1. 对于给定的数据句柄和访问器,索引范围 [0N) 是一个可访问范围,如果对于范围中的每个索引,access 成员函数都会生成对元素的有效引用。

[编辑] 另请参阅

用于对 mdspan 元素进行索引访问的类型
(类模板) [编辑]