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 ; и
  • b. access ( q, j ) предоставляет доступ к тому же элементу, что и a. access ( p, i + j ) , для каждого j в диапазоне [ 0 , n - i ) .

Доступный диапазон

Диапазон индексов [ 0 , N ) является доступным диапазоном для данного дескриптора данных и аксессора, если для каждого индекса в диапазоне функция-член access возвращает корректную ссылку на элемент.

Стандартная библиотека

Следующие типы стандартной библиотеки удовлетворяют AccessorPolicy требованиям:

тип для индексированного доступа к элементам mdspan
(шаблон класса)
тип для выровненного доступа к элементам mdspan
(шаблон класса)
Определено в пространстве имён std::linalg
std::mdspan политика доступа, ссылка которой представляет произведение фиксированного масштабирующего коэффициента и ссылки вложенной std::mdspan политики доступа
(шаблон класса)
std::mdspan политика доступа, ссылка которой представляет комплексное сопряжение ссылки вложенной std::mdspan политики доступа
(шаблон класса)