C++ named requirements: AccessorPolicy (since C++23)
From cppreference.com
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
Name | Type | Requirements |
---|---|---|
A::element_type |
(unspecified) |
|
A::data_handle_type |
(unspecified) but the type need not be element_type* |
|
A::reference |
(unspecified) but the type need not be element_type& |
|
A::offset_policy |
OP |
|
Member functions
Expression | Return type | Semantics |
---|---|---|
a.access(p, i) | typename A::reference |
|
a.offset(p, i) | typename A::offset_policy::data_handle_type |
|
- ↑ 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.
See also
(C++23) |
a type for indexed access to elements of mdspan (class template) |