C++ 具名要求:访问器策略(AccessorPolicy) (C++23 起)

来自cppreference.com
< cpp‎ | named req


 
 
C++ 具名要求
 

访问器策略(AccessorPolicy) 定义了从给定的指向元素的数据把柄和一个索引,如何访问元素。它被用作 std::mdspan 的一项策略,以指定如何使用底层一维索引访问元素的引用。

目录

[编辑]要求

如果类型 A 实现了 copyable,并且以下各项均为 true,那么它满足访问器策略(AccessorPolicy)

而且,给定下列类型和值,下表中展示的各表达式均有效并具有指定的语义:

[编辑]凡例

类型 定义
A 访问器策略类型
OP 偏移策略类型
定义
a (可有 const 限定的)A 类型的值
p (可有 const 限定的)A::data_handle_type 类型的值
i, j, nstd::size_t 类型的值

[编辑]成员类型

类型 定义 要求
A::element_type未指定
  • 并非抽象类类型的完整对象类型
A::data_handle_type未指定[1]
  • 实现 copyable
  • 下列值都是 true
A::reference未指定[2]
A::offset_policyOP
  • 满足访问器策略(AccessorPolicy) 的要求
  • std::constructible_from<OP, const A&>true
  • typename OP​::​element_typetypename A​::​element_type 是同一类型
  1. 不需要是 element_type*
  2. 不需要是 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 的可访问范围(见下文)的任意整数 n
  • [0n - i)qb 的可访问范围;并且
  • 对于范围 [0n - i) 中的每个 jb.access(q, j) 提供到与 a.access(p, i + j) 相同元素的访问。

[编辑]可访问范围

对于索引范围 [0N),如果访问器的成员函数 access 对范围中的每个索引产生的元素引用都有效,那么它是给定数据把柄和访问器的可访问范围

[编辑]标准库

下列标准库类型满足访问器策略(AccessorPolicy)

指示索引访问 mdspan 元素的方式的类型
(类模板)[编辑]
提供按对齐访问 mdspan 成员的类型
(类模板)[编辑]
在命名空间 std::linalg 定义
std::mdspan 访问器策略,其引用表示一个固定缩放因数和其嵌套 std::mdspan 访问器的引用的乘积
(类模板)[编辑]
std::mdspan 访问器策略,其引用代表的是其嵌套 std::mdspan 访问器的引用的复共轭
(类模板)[编辑]
close