Namespaces
Variants

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

From cppreference.net
void swap ( optional & other ) noexcept ( /* voir ci-dessous */ ) ;
(spécifications techniques des bibliothèques fondamentales)

Échange le contenu avec celui de other .

  • Si ni * this ni other ne contiennent de valeur, la fonction n'a aucun effet.
  • Si un seul des deux * this et other contient une valeur (appelons cet objet in et l'autre un ), la valeur contenue de un est initialisée directement à partir de std :: move ( * in ) , suivie de la destruction de la valeur contenue de in comme par in. val - > T :: ~T ( ) . Après cet appel, in ne contient pas de valeur tandis que un contient une valeur.
  • Si les deux * this et other contiennent des valeurs, les valeurs contenues sont échangées en appelant using std:: swap ; swap ( ** this, * other ) . T les lvalues doivent satisfaire Swappable .

Table des matières

Paramètres

autre - l'objet optional avec lequel échanger le contenu

Valeur de retour

(aucun)

Exceptions

noexcept spécification :
noexcept ( std:: is_nothrow_move_constructible < T > :: value &&
noexcept ( swap ( std:: declval < T & > ( ) , std:: declval < T & > ( ) ) ) )

En cas d'exception levée, les états des valeurs contenues de * this et other sont déterminés par les garanties de sûreté face aux exceptions de swap du type T ou du constructeur de déplacement de T , selon celui qui est appelé. Pour * this et other , si l'objet contenait une valeur, il reste contenant une valeur, et vice versa.

Voir aussi

spécialise l'algorithme std::swap
(fonction)