命名空间
变体
操作

C++ 命名要求: AccessorPolicy (C++23 起)

来自 cppreference.cn
 
 
C++ 命名要求
基本
类型属性
全库范围
(C++11)




Container(容器)
容器元素
迭代器 (Iterator)
流 I/O
格式化器
(C++20)
随机数
并发
(C++11)
Ranges
多维视图
AccessorPolicy
(C++23)
其他

 

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

目录

[编辑] 要求

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

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

[编辑] 图例

类型 定义
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*
  • 建模 copyable
  • 以下所有条件均为 true
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,使得对于 bA::offset_policy(a),以及对于 [0n)pa 的可访问范围[注 1] 的任意整数 n
  • [0n - i)qb 的可访问范围;并且
  • b.access(q, j) 提供与 a.access(p, i + j) 相同的元素的访问,对于范围 [0n - i) 中的每个 j
  1. 索引范围 [0N) 是给定数据句柄和访问器的“可访问范围”当且仅当,对于范围内的每个索引,access 成员函数产生一个有效的元素引用。

[编辑] 标准库

以下标准库类型满足 AccessorPolicy 要求

用于对 mdspan 元素进行索引访问的类型
(类模板) [编辑]
用于对 mdspan 元素进行对齐访问的类型
(类模板) [编辑]
在命名空间 std::linalg 中定义
(C++26)
std::mdspan 访问器策略,其引用表示固定比例因子及其嵌套 std::mdspan 访问器引用的乘积
(类模板) [编辑]
std::mdspan 访问器策略,其引用表示其嵌套 std::mdspan 访问器引用的复共轭
(类模板) [编辑]