C++ benannte Anforderungen: AccessorPolicy (seit C++23)
Von cppreference.com
< cpp | benannte req
AccessorPolicy definiert, wie auf Elemente von einem gegebenen Datenhandle zu solchen Elementen und einem Index zugegriffen wird. Sie wird als Richtlinie in std::mdspan verwendet, um den Zugriff auf eine Referenz eines Elements mithilfe eines zugrunde liegenden eindimensionalen Indexes anzugeben.
Inhalt |
[bearbeiten] Anforderungen
Ein Typ A erfüllt AccessorPolicy, wenn er copyable modelliert und Folgendes gilt true
- std::is_nothrow_move_constructible_v<A>
- std::is_nothrow_move_assignable_v<A>
- std::is_nothrow_swappable_v<A>
Und, unter den folgenden Typen und Werten, sind die in der folgenden Tabelle gezeigten Ausdrücke gültig und haben die angegebene Semantik
[bearbeiten] Legende
| Typ | Definition |
A
|
ein Accessor-Policy-Typ |
OP
|
ein Offset-Policy-Typ |
| Wert | Definition |
| a | ein Wert vom Typ (möglicherweise const-qualifiziert) A |
| p | ein Wert vom Typ (möglicherweise const-qualifiziert) A::data_handle_type |
| i, j, n | Werte vom Typ std::size_t |
[bearbeiten] Member-Typen
| Name | Typ | Anforderungen |
|---|---|---|
A::element_type |
(nicht spezifiziert) |
|
A::data_handle_type |
(nicht spezifiziert), aber der Typ muss nicht element_type* sein |
|
A::reference |
(nicht spezifiziert), aber der Typ muss nicht element_type& sein |
|
A::offset_policy |
OP |
|
[bearbeiten] Memberfunktionen
| Ausdruck | Rückgabetyp | Semantik |
|---|---|---|
| a.access(p, i) | typename A::reference |
|
| a.offset(p, i) | typename A::offset_policy::data_handle_type |
|
- ↑ Ein Bereich von Indizes
[0,N)ist ein zugänglicher Bereich eines gegebenen Datenhandles und eines Accessors, wenn für jeden Index im Bereich die `access`-Memberfunktion eine gültige Referenz auf ein Element erzeugt.
[bearbeiten] Standardbibliothek
Die folgenden Standardbibliothekstypen erfüllen die Anforderungen von AccessorPolicy
| (C++23) |
ein Typ für den indizierten Zugriff auf Elemente von mdspan(class template) |
| (C++26) |
ein Typ für den ausgerichteten Zugriff auf Elemente von mdspan(class template) |
| Definiert im Namespace
std::linalg | |
| (C++26) |
std::mdspan Accessor-Richtlinie, deren Referenz das Produkt eines festen Skalierungsfaktors und der Referenz des verschachtelten std::mdspan Accessors darstellt (Klassenschablone) |
| (C++26) |
std::mdspan Accessor-Richtlinie, deren Referenz die komplexe Konjugation der Referenz des verschachtelten std::mdspan Accessors darstellt (Klassenschablone) |