Namespaces
Variants

std::experimental::optional<T>:: optional

From cppreference.net
constexpr optional ( ) noexcept ;
constexpr optional ( std:: experimental :: nullopt_t ) noexcept ;
(1) (spécification technique des fondamentaux de la bibliothèque)
optional ( const optional & other ) ;
(2) (spécification technique des fondamentaux de la bibliothèque)
optional ( optional && other ) noexcept ( /* voir ci-dessous */ ) ;
(3) (spécification technique des fondamentaux de la bibliothèque)
constexpr optional ( const T & value ) ;
(4) (spécification technique des fondamentaux de la bibliothèque)
constexpr optional ( T && value ) ;
(5) (spécification technique des fondamentaux de la bibliothèque)
template < class ... Args >
constexpr explicit optional ( std:: experimental :: in_place_t , Args && ... args ) ;
(6) (spécification technique des fondamentaux de la bibliothèque)
template < class U, class ... Args >

constexpr explicit optional ( std:: experimental :: in_place_t ,
std:: initializer_list < U > ilist,

Args && ... args ) ;
(7) (spécification technique des fondamentaux de la bibliothèque)

Construit un nouvel objet optional .

1) Construit l'objet qui ne contient pas de valeur .
2) Constructeur de copie : Si other contient une valeur, initialise la valeur contenue comme si on initialisait directement (mais pas par initialisation de liste directe) un objet de type T avec l'expression * other . Si other ne contient pas de valeur, construit un objet qui ne contient pas de valeur .
3) Constructeur de déplacement : Si other contient une valeur, initialise la valeur contenue comme si on initialisait directement (mais pas par initialisation de liste directe) un objet de type T avec l'expression std :: move ( * other ) et ne rend pas other vide : un optional déplacé depuis contient toujours une valeur , mais la valeur elle-même est déplacée. Si other ne contient pas de valeur, construit un objet qui ne contient pas de valeur .
4) Construit un objet optionnel qui contient une valeur , initialisé comme si on initialisait directement (mais pas par initialisation de liste directe) un objet de type T avec l'expression value . Ce constructeur est constexpr si le constructeur de T sélectionné par l'initialisation directe est constexpr .
5) Construit un objet optionnel qui contient une valeur , initialisé comme si on initialisait directement (mais pas par initialisation de liste directe) un objet de type T avec l'expression std :: move ( value ) . Ce constructeur est constexpr si le constructeur de T sélectionné par l'initialisation directe est constexpr .
6) Construit un objet optionnel qui contient une valeur , initialisé comme si on initialisait directement (mais pas par initialisation de liste directe) un objet de type T à partir des arguments std:: forward < Args > ( args ) ... .
7) Construit un objet optionnel qui contient une valeur , initialisée comme si on initialisait directement (mais pas par initialisation de liste directe) un objet de type T à partir des arguments ilist, std:: forward < Args > ( args ) ... . La fonction ne participe pas à la résolution de surcharge si std:: is_constructible < T, std:: initializer_list < U > & , Args && ... > :: value ! = true .

Table des matières

Paramètres

autre - un autre objet optional dont la valeur contenue doit être copiée
valeur - valeur pour initialiser la valeur contenue
args... - arguments pour initialiser la valeur contenue
ilist - liste d'initialisation pour initialiser la valeur contenue
Exigences de type
-
T doit satisfaire aux exigences de CopyConstructible pour utiliser les surcharges (2,4).
-
T doit satisfaire aux exigences de MoveConstructible pour utiliser les surcharges (3,5).

Exceptions

2) Lance toute exception levée par le constructeur de T .
3) Lance toute exception levée par le constructeur de T . Possède la déclaration noexcept suivante :
noexcept spécification :
noexcept ( std:: is_nothrow_move_constructible < T > :: value )
4-7) Lance toute exception levée par le constructeur de T .

Exemple

#include <experimental/optional>
#include <iostream>
#include <string>
int main()
{
    std::experimental::optional<int> o1,      // vide
                                     o2 = 1,  // initialisé à partir d'une rvalue
                                     o3 = o2; // constructeur par copie
    std::experimental::optional<std::string> o4(std::experimental::in_place,
                                                {'a', 'b', 'c'});
    std::cout << *o2 << ' ' << *o3 << ' ' << *o4 << '\n';
}

Sortie :

1 1 abc

Voir aussi

crée un objet optional
(modèle de fonction)