std::experimental::optional<T>:: operator=
|
optional
&
operator
=
(
std::
experimental
::
nullopt_t
)
noexcept
;
|
(1) | (biblioteca fundamentals TS) |
|
optional
&
operator
=
(
const
optional
&
other
)
;
|
(2) | (biblioteca fundamentals TS) |
|
optional
&
operator
=
(
optional
&&
other
)
noexcept
(
/* ver más abajo */
)
;
|
(3) | (biblioteca fundamentals TS) |
|
template
<
class
U
>
optional & operator = ( U && value ) ; |
(4) | (biblioteca fundamentals TS) |
Reemplaza el contenido de * this con el contenido de other .
- Si tanto * this como other no contienen un valor, la función no tiene efecto.
- Si * this contiene un valor, pero other no, entonces el valor contenido se destruye llamando a su destructor. * this no contiene un valor después de la llamada.
- Si other contiene un valor, entonces dependiendo de si * this contiene un valor, el valor contenido es inicializado directamente o asignado desde * other (2) o std :: move ( * other ) (3) . Nótese que un optional del que se ha movido todavía contiene un valor .
Contenidos |
Parámetros
| otro | - |
otro objeto
optional
cuyo valor contenido asignar
|
| valor | - | valor a asignar al valor contenido |
| Requisitos de tipo | ||
-
T
debe cumplir con los requisitos de
CopyAssignable
y
CopyConstructible
para usar la sobrecarga (2).
|
||
-
T
debe cumplir con los requisitos de
MoveAssignable
y
MoveConstructible
para usar la sobrecarga (3).
|
||
Valor de retorno
* this
Excepciones
T
. Si se lanza una excepción, el estado de inicialización de
*
this
(y de
other
en el caso de (2)) permanece sin cambios, es decir, si el objeto contenía un valor, sigue conteniendo un valor, y viceversa. Los contenidos de
value
y los valores contenidos de
*
this
y
other
dependen de las garantías de seguridad ante excepciones de la operación desde la que se origina la excepción (constructor de copia, asignación de movimiento, etc.).
(3) tiene la siguiente declaración
noexcept
:
Notas
Un objeto opcional
op
puede convertirse en un optional vacío tanto con
op
=
{
}
;
como con
op
=
nullopt
;
.
Ejemplo
#include <experimental/optional> #include <iostream> int main() { std::experimental::optional<const char*> s1 = "abc", s2; // constructor s2 = s1; // assignment s1 = "def"; // decaying assignment (U = char[4], T = const char*) std::cout << *s2 << ' ' << *s1 << '\n'; }
Salida:
abc def
Véase también
|
construye el valor contenido in-situ
(función miembro pública) |