Namespaces
Variants

C++ named requirements: AccessorPolicy (since C++23)

From cppreference.net
C++ named requirements

AccessorPolicy définit comment les éléments sont accédés à partir d'un gestionnaire de données donné vers ces éléments et un index. Il est utilisé comme politique dans std:: mdspan pour spécifier l'accès à une référence d'un élément en utilisant un index 1D sous-jacent.

Table des matières

Exigences

Un type A satisfait AccessorPolicy s'il modélise copyable , et que les éléments suivants sont true :

Et, étant donné les types et valeurs suivants, les expressions présentées dans le tableau ci-dessous sont valides et possèdent la sémantique indiquée :

Légende

Type Définition
A un type de politique d'accès
OP un type de politique de décalage
Valeur Définition
a une valeur de type (éventuellement qualifié const) A
p une valeur de type (éventuellement qualifié const) A::data_handle_type
i , j , n valeurs de type std:: size_t

Types membres

Type Définition Exigences
A::element_type non spécifié
  • Un type d'objet complet qui n'est pas un type de classe abstraite
A::data_handle_type non spécifié [1]
  • Modélise copyable
  • Les valeurs suivantes sont toutes true :
A::reference non spécifié [2]
A::offset_policy OP
  • Satisfait aux exigences de AccessorPolicy
  • std:: constructible_from < OP, const A & > est true
  • typename OP​ :: ​element_type et typename A​ :: ​element_type sont du même type
  1. Non requis d'être element_type * .
  2. Non requis d'être element_type & .

Fonctions membres

Expression Type de retour Sémantique
a. access ( p, i ) typename A :: reference
a. offset ( p, i ) typename A :: offset_policy
:: data_handle_type
  • Une valeur q telle que pour b étant A :: offset_policy ( a ) , et tout entier n pour lequel [ 0 , n ) est une plage accessible (voir ci-dessous) de p et a .
  • [ 0 , n - i ) est une plage accessible de q et b ; et
  • b. access ( q, j ) fournit un accès au même élément que a. access ( p, i + j ) , pour tout j dans la plage [ 0 , n - i ) .

Plage accessible

Une plage d'indices [ 0 , N ) est une plage accessible d'un handle de données donné et d'un accesseur si, pour chaque indice dans la plage, la fonction membre access produit une référence valide vers un élément.

Bibliothèque standard

Les types de bibliothèque standard suivants satisfont les exigences AccessorPolicy :

un type pour l'accès indexé aux éléments de mdspan
(modèle de classe)
un type pour l'accès aligné aux éléments de mdspan
(modèle de classe)
Défini dans l'espace de noms std::linalg
std::mdspan politique d'accès dont la référence représente le produit d'un facteur d'échelle fixe et de la référence de son accesseur std::mdspan imbriqué
(modèle de classe)
std::mdspan politique d'accès dont la référence représente le conjugué complexe de la référence de son accesseur std::mdspan imbriqué
(modèle de classe)