std::experimental::optional<T>:: operator=
|
optional
&
operator
=
(
std::
experimental
::
nullopt_t
)
noexcept
;
|
(1) | (bibliothèque fundamentals TS) |
|
optional
&
operator
=
(
const
optional
&
other
)
;
|
(2) | (bibliothèque fundamentals TS) |
|
optional
&
operator
=
(
optional
&&
other
)
noexcept
(
/* voir ci-dessous */
)
;
|
(3) | (bibliothèque fundamentals TS) |
|
template
<
class
U
>
optional & operator = ( U && value ) ; |
(4) | (bibliothèque fundamentals TS) |
Remplace le contenu de * this par le contenu de other .
- Si ni * this ni other ne contiennent de valeur, la fonction n'a aucun effet.
- Si * this contient une valeur mais que other n'en contient pas, alors la valeur contenue est détruite par appel à son destructeur. * this ne contient plus de valeur après l'appel.
- Si other contient une valeur, alors selon que * this contienne ou non une valeur, la valeur contenue est soit initialisée directement soit assignée à partir de * other (2) ou de std :: move ( * other ) (3) . Notez qu'un optional déplacé contient toujours une valeur .
Table des matières |
Paramètres
| other | - |
autre objet
optional
dont la valeur contenue doit être assignée
|
| value | - | valeur à assigner à la valeur contenue |
| Exigences de type | ||
-
T
doit satisfaire aux exigences de
CopyAssignable
et
CopyConstructible
pour utiliser la surcharge (2).
|
||
-
T
doit satisfaire aux exigences de
MoveAssignable
et
MoveConstructible
pour utiliser la surcharge (3).
|
||
Valeur de retour
* this
Exceptions
T
. Si une exception est levée, l'état d'initialisation de
*
this
(et de
other
dans le cas de (2)) reste inchangé, c'est-à-dire que si l'objet contenait une valeur, il contient toujours une valeur, et vice versa. Le contenu de
value
et les valeurs contenues de
*
this
et
other
dépendent des garanties de sécurité face aux exceptions de l'opération d'où provient l'exception (constructeur de copie, affectation par déplacement, etc.).
(3) possède la déclaration
noexcept
suivante :
Notes
Un objet optionnel
op
peut être transformé en un optionnel vide avec à la fois
op
=
{
}
;
et
op
=
nullopt
;
.
Exemple
#include <experimental/optional> #include <iostream> int main() { std::experimental::optional<const char*> s1 = "abc", s2; // constructeur s2 = s1; // affectation s1 = "def"; // affectation avec décroissance (U = char[4], T = const char*) std::cout << *s2 << ' ' << *s1 << '\n'; }
Sortie :
abc def
Voir aussi
|
construit la valeur contenue en place
(fonction membre publique) |