[#bsl-optional-072-operator_assign-01] = xref:bsl.adoc[bsl]::xref:bsl/optional-072.adoc[optional]::operator= :relfileprefix: ../../ :mrdocs: Assignment operators == Synopses Declared in `<bslstl_optional.h>` Assign to this object the value of the specified `rhs` object, and return a non‐`const` reference to this object. [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- xref:BloombergLP/bslstl/Optional_Base-05.adoc[Optional_Base<t_TYPE, t_USES_BSLMA_ALLOC>]& xref:BloombergLP/bslstl/Optional_Base-05/operator_assign-05.adoc[operator=](xref:BloombergLP/bslstl/Optional_Base-05.adoc[Optional_Base] const& rhs); ---- [.small]#xref:BloombergLP/bslstl/Optional_Base-05/operator_assign-05.adoc[_» more..._]# Disengage this object if the specified `rhs` object is disengaged, and assign to this object the value of `rhs.value()` (of `t_ANY_TYPE`) converted to `t_TYPE` otherwise. Return a reference providing modifiable access to this object. Note that this method does not participate in overload resolution unless `t_TYPE` and `t_ANY_TYPE` are compatible. This assignment operator can be called in constant expressions only when neither `t_TYPE` nor `t_ANY_TYPE` is allocator‐aware. [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<class t_ANY_TYPE> constexpr xref:bsl/optional-072.adoc[optional<t_TYPE>]& xref:bsl/optional-072/operator_assign-08.adoc[operator=](xref:bsl/optional-072.adoc[optional<t_ANY_TYPE>] const& rhs); ---- [.small]#xref:bsl/optional-072/operator_assign-08.adoc[_» more..._]# Reset this object to be disengaged and return a reference providing modifiable access to this object. This assignment operator can be called in constant expressions only when `t_TYPE` is not allocator‐aware. [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- constexpr xref:bsl/optional-072.adoc[optional<t_TYPE>]& xref:bsl/optional-072/operator_assign-09.adoc[operator=](xref:bsl/nullopt_t.adoc[bsl::nullopt_t]) noexcept; ---- [.small]#xref:bsl/optional-072/operator_assign-09.adoc[_» more..._]# Assign to this object the value of the specified `rhs` object, and return a non‐`const` reference to this object. The allocators of this object and `rhs` both remain unchanged. The contents of `rhs` are either move‐constructed into or move‐assigned to this object. `rhs` is left in a valid but unspecified state. [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- xref:BloombergLP/bslstl/Optional_Base-05.adoc[Optional_Base<t_TYPE, t_USES_BSLMA_ALLOC>]& xref:BloombergLP/bslstl/Optional_Base-05/operator_assign-08.adoc[operator=](xref:BloombergLP/bslmf/MovableRef.adoc[BloombergLP::bslmf::MovableRef<Optional_Base>] rhs); ---- [.small]#xref:BloombergLP/bslstl/Optional_Base-05/operator_assign-08.adoc[_» more..._]# Disengage this object if the specified `rhs` object is disengaged, and move assign to this object the value of `rhs.value()` (of `t_ANY_TYPE`) converted to `t_TYPE` otherwise. Return a reference providing modifiable access to this object. Note that this method does not participate in overload resolution unless `t_TYPE` and `t_ANY_TYPE` are compatible. This assignment operator can be called in constant expressions only when neither `t_TYPE` nor `t_ANY_TYPE` is allocator‐aware. [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<class t_ANY_TYPE> constexpr xref:bsl/optional-072.adoc[optional<t_TYPE>]& xref:bsl/optional-072/operator_assign-0f.adoc[operator=](xref:BloombergLP/bslmf/MovableRef_Deduced.adoc[BloombergLP::bslmf::MovableRef_Deduced<optional<t_ANY_TYPE>>] rhs); ---- [.small]#xref:bsl/optional-072/operator_assign-0f.adoc[_» more..._]# Disengage this object if the specified `rhs` object is disengaged, and assign to this object the value of `rhs.value()` (of `t_ANY_TYPE`) converted to `t_TYPE` otherwise. Return a reference providing modifiable access to this object. Note that this method does not participate in overload resolution unless `t_TYPE` and `t_ANY_TYPE` are compatible. This assignment operator can be called in constant expressions only when `t_TYPE` is not allocator‐aware. [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<class t_ANY_TYPE = t_TYPE> constexpr xref:bsl/optional-072.adoc[optional<t_TYPE>]& xref:bsl/optional-072/operator_assign-06.adoc[operator=](std::optional<t_ANY_TYPE> const& rhs); ---- [.small]#xref:bsl/optional-072/operator_assign-06.adoc[_» more..._]# Assign to this object the value of the specified `rhs` object converted to `t_TYPE`, and return a reference providing modifiable access to this object. Note that this method may invoke assignment from `rhs`, or construction from `rhs`, depending on whether this object is engaged. This assignment operator does not participate in overload resolution if `t_ANY_TYPE` is possibly cv‐qualified `bsl::optional<t_TYPE>`. Also note that an assignment of the form `o = {};`, where `o` is of type `optional`, will always assign to `o` the empty state, and never call this overload (see implementation notes). This assignment operator can be called in constant expressions only when `t_TYPE` is not allocator‐aware. [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<class t_ANY_TYPE = t_TYPE> constexpr xref:bsl/optional-072.adoc[optional<t_TYPE>]& xref:bsl/optional-072/operator_assign-0d.adoc[operator=](t_ANY_TYPE&& rhs); ---- [.small]#xref:bsl/optional-072/operator_assign-0d.adoc[_» more..._]# Disengage this object if the specified `rhs` object is disengaged, and move assign to this object the value of `rhs.value()` (of `t_ANY_TYPE`) converted to `t_TYPE` otherwise. Return a reference providing modifiable access to this object. Note that this method does not participate in overload resolution unless `t_TYPE` and `t_ANY_TYPE` are compatible. This assignment operator can be called in constant expressions only when `t_TYPE` is not allocator‐aware. [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<class t_ANY_TYPE = t_TYPE> constexpr xref:bsl/optional-072.adoc[optional<t_TYPE>]& xref:bsl/optional-072/operator_assign-0e.adoc[operator=](std::optional<t_ANY_TYPE>&& rhs); ---- [.small]#xref:bsl/optional-072/operator_assign-0e.adoc[_» more..._]# [.small]#Created with https://www.mrdocs.com[MrDocs]#