std::experimental:: optional
|
Défini dans l'en-tête
<experimental/optional>
|
||
|
template
<
class
T
>
class optional ; |
(library fundamentals TS) | |
Le modèle de classe
std::experimental::optional
gère une valeur contenue
optionnelle
, c'est-à-dire une valeur qui peut être présente ou non.
Un cas d'utilisation courant pour
optional
est la valeur de retour d'une fonction qui peut échouer. Contrairement à d'autres approches, telles que
std::
pair
<
T,
bool
>
,
optional
gère efficacement les objets coûteux à construire et est plus lisible, car l'intention est exprimée explicitement.
Toute instance de
optional<T>
à un moment donné soit
contient une valeur
soit
ne contient pas de valeur
.
Si un
optional<T>
contient une valeur
, il est garanti que la valeur est allouée dans l'empreinte mémoire de l'objet
optional
, c'est-à-dire qu'aucune allocation dynamique de mémoire n'a jamais lieu. Ainsi, un objet
optional
modélise un objet, et non un pointeur, même si l'
operator*()
et l'
operator->()
sont définis.
Lorsqu'un objet de type optional<T> est contextuellement converti en bool , la conversion retourne true si l'objet contient une valeur et false s'il ne contient pas de valeur .
L'objet
optional
contient une valeur
dans les conditions suivantes :
-
L'objet est initialisé avec une valeur de type
T. -
L'objet est assigné à partir d'un autre
optionalqui contient une valeur .
L'objet ne contient pas de valeur dans les conditions suivantes :
- L'objet est initialisé par défaut.
-
L'objet est initialisé avec une valeur de
std::experimental::nullopt_t
ou un objet
optionalqui ne contient pas de valeur . -
L'objet est assigné à partir d'une valeur de
std::experimental::nullopt_t
ou d'un
optionalqui ne contient pas de valeur .
Table des matières |
Paramètres du modèle
| T | - | le type de la valeur pour lequel gérer l'état d'initialisation. Le type doit satisfaire aux exigences de Destructible . |
Types membres
| Type de membre | Définition |
value_type
|
T
|
Fonctions membres
|
construit l'objet optionnel
(fonction membre publique) |
|
|
détruit la valeur contenue, s'il y en a une
(fonction membre publique) |
|
|
assigne le contenu
(fonction membre publique) |
|
Observateurs |
|
|
accède à la valeur contenue
(fonction membre publique) |
|
|
vérifie si l'objet contient une valeur
(fonction membre publique) |
|
|
retourne la valeur contenue
(fonction membre publique) |
|
|
retourne la valeur contenue si disponible, une autre valeur sinon
(fonction membre publique) |
|
Modificateurs |
|
|
échange le contenu
(fonction membre publique) |
|
|
construit la valeur contenue en place
(fonction membre publique) |
|
Objets membres
| Nombre du membre | Définition |
val
(privé)
|
pointeur vers la valeur contenue (qui pointe vers un membre de données du même objet), le nom est uniquement à titre d'exposition |
Fonctions non membres
compare
optional
les objets
(modèle de fonction) |
|
crée un objet
optional
(modèle de fonction) |
|
|
spécialise l'algorithme
std::swap
(fonction) |
Classes d'assistance
|
spécialise l'algorithme
std::hash
(spécialisation de modèle de classe) |
|
|
(library fundamentals TS)
|
indicateur de type optionnel avec état non initialisé
(classe) |
|
(library fundamentals TS)
|
type de balise de désambiguïsation pour la construction en place des types optionnels
(classe) |
|
(library fundamentals TS)
|
exception indiquant un accès vérifié à un optionnel qui ne contient pas de valeur
(classe) |
Objets auxiliaires
|
(library fundamentals TS)
|
un objet de type
nullopt_t
(fonction) |
|
(library fundamentals TS)
|
un objet de type
std::
experimental
::
in_place_t
(fonction) |