Namespaces
Variants

std::experimental:: optional

From cppreference.net
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 optional qui 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 optional qui ne contient pas de valeur .
  • L'objet est assigné à partir d'une valeur de std::experimental::nullopt_t ou d'un optional qui 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)