Namespaces
Variants

C++ named requirements: AccessorPolicy (since C++23)

From cppreference.net
C++ named requirements

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 未指定 [1]
  • 满足 copyable 概念
  • 以下值必须全部为 true
A::reference 未指定 [2]
A::offset_policy OP
  • 满足 AccessorPolicy 的要求
  • std:: constructible_from < OP, const A & > 必须为 true
  • typename OP​ :: ​element_type typename 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 ,使得对于 b A :: offset_policy ( a ) ,且对于任意整数 n ,当 [ 0 , n ) p a 的可访问范围时(见下文):
  • [ 0 , n - i ) q b 的可访问范围;且
  • 对于范围 [ 0 , n - i ) 内的每个 j b. access ( q, j ) 提供对与 a. access ( p, i + j ) 相同元素的访问。

可访问范围

索引范围 [ 0 , N ) 是给定数据句柄和访问器的 可访问范围 ,当且仅当对于该范围内的每个索引, access 成员函数都能生成指向有效元素的引用。

标准库

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

用于索引访问 mdspan 元素的类型
(类模板)
用于对齐访问 mdspan 元素的类型
(类模板)
定义于命名空间 std::linalg
std::mdspan 访问器策略,其引用表示固定缩放因子与其嵌套 std::mdspan 访问器引用的乘积
(类模板)
std::mdspan 访问器策略,其引用表示其嵌套 std::mdspan 访问器引用的复共轭
(类模板)