C++ named requirements: AccessorPolicy (since C++23)
AccessorPolicy defines how elements are accessed from a given data handle to such elements and an index. It is used as a policy in std::mdspan to specify the access to a reference of an element using an underlying 1D index.
Requirements
A type A satisfies AccessorPolicy if it models copyable, and the following are true:
std::is_nothrow_move_constructible_v<A>std::is_nothrow_move_assignable_v<A>std::is_nothrow_swappable_v<A>
And, given the following types and values, the expressions shown in the table below are valid and have the indicated semantics:
Legend
| Type | Definition |
|---|---|
A | an accessor policy type |
OP | an offset policy type |
| Value | Definition |
a | a value of type (possibly const-qualified) A |
p | a value of type (possibly const-qualified) A::data_handle_type |
i, j, n | values of type std::size_t |
Member types
| Type | Definition | Requirements |
|---|---|---|
A::element_type | unspecified |
|
A::data_handle_type | unspecified[1] |
|
A::reference | unspecified[2] |
|
A::offset_policy |
OP |
|
- Not required to be element_type*.
- Not required to be element_type&.
Member functions
| Expression | Return type | Semantics |
|---|---|---|
a.access(p, i) | typenameA::reference |
|
a.offset(p, i) |
typenameA::offset_policy ::data_handle_type |
|
Accessible range
A range of indices [0, N) is an accessible range of a given data handle and an accessor if, for each index in the range, the access member function produces a valid reference to an element.
Standard library
The following standard library types satisfy AccessorPolicy requirements:
|
(C++23) | a type for indexed access to elements of mdspan (class template) |
|
(C++26) | a type for aligned access to elements of mdspan (class template) |
Defined in namespace std::linalg |
|
|---|---|
|
(C++26) |
std::mdspan accessor policy whose reference represents the product of a scaling factor that is fixed and its nested std::mdspan accessor's reference (class template) |
|
(C++26) |
std::mdspan accessor policy whose reference represents the complex conjugate of its nested std::mdspan accessor's reference (class template) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/named_req/AccessorPolicy