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
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.
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) |