Именованные требования C++: AccessorPolicy (начиная с C++23)
AccessorPolicy определяет, как получать доступ к элементам по заданному дескриптору данных и индексу. Это требование используется в качестве политики в std::mdspan для указания способа получения ссылки на элемент с использованием базового одномерного индекса.
Требования
Тип A удовлетворяет требованиям AccessorPolicy, если он моделирует copyable и выполняются следующие true:
std::is_nothrow_move_constructible_v<A>std::is_nothrow_move_assignable_v<A>std::is_nothrow_swappable_v<A>
Кроме того, для следующих типов и значений выражения, указанные в таблице ниже, корректны и имеют заданную семантику:
Обозначения
| Тип | Определение |
|---|---|
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] |
|
A::reference | не определено[2] |
|
A::offset_policy |
OP |
|
- Не обязательно должен быть element_type*.
- Не обязательно должен быть element_type&.
Функции-члены
| Выражение | Возвращаемый тип | Семантика |
|---|---|---|
a.access(p, i) | typenameA::reference |
|
a.offset(p, i) |
typenameA::offset_policy ::data_handle_type |
|
Доступный диапазон
Диапазон индексов [0, N) является доступным диапазоном для заданного дескриптора данных и средства доступа, если для каждого индекса в диапазоне функция-член access возвращает корректную ссылку на элемент.
Стандартная библиотека
Следующие типы стандартной библиотеки удовлетворяют требованиям AccessorPolicy:
|
(C++23) | тип для индексированного доступа к элементам mdspan (шаблон класса) |
|
(C++26) | тип для выровненного доступа к элементам mdspan (шаблон класса) |
Определён в пространстве имён std::linalg |
|
|---|---|
|
(C++26) |
std::mdspan политика доступа, ссылка которой представляет произведение фиксированного коэффициента масштабирования и ссылки вложенного средства доступа std::mdspan (шаблон класса) |
|
(C++26) |
std::mdspan политика доступа, ссылка которой представляет комплексно-сопряжённое значение ссылки вложенного средства доступа std::mdspan (шаблон класса) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/named_req/AccessorPolicy