[#beman-optional-optional-03-operator_assign-01] = xref:beman.adoc[beman]::xref:beman/optional.adoc[optional]::xref:beman/optional/optional-03.adoc[optional]::operator= :relfileprefix: ../../../ :mrdocs: Assignment operators == Synopses Declared in `<beman/optional/optional.hpp>` Copy assigns the value from `rhs` if it has one. [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- constexpr xref:beman/optional/optional-03.adoc[optional]& xref:beman/optional/optional-03/operator_assign-06.adoc[operator=](xref:beman/optional/optional-03.adoc[optional] const& other) requires std::is_copy_constructible_v<T> && std::is_copy_assignable_v<T> && std::is_trivially_copy_constructible_v<T> && std::is_trivially_copy_assignable_v<T> = default; ---- [.small]#xref:beman/optional/optional-03/operator_assign-06.adoc[_» more..._]# Copy assigns the value from `rhs` if it has one. [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- constexpr xref:beman/optional/optional-03.adoc[optional<T>]& xref:beman/optional/optional-03/operator_assign-09.adoc[operator=](xref:beman/optional/optional-03.adoc[optional] const& rhs) requires std::is_copy_constructible_v<T> && std::is_copy_assignable_v<T> && (!std::is_trivially_copy_assignable_v<T>); ---- [.small]#xref:beman/optional/optional-03/operator_assign-09.adoc[_» more..._]# Assigns the stored value from `rhs` if it has one, destroying the old value if there [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<class U> constexpr xref:beman/optional/optional-03.adoc[optional<T>]& xref:beman/optional/optional-03/operator_assign-08.adoc[operator=](xref:beman/optional/optional-03.adoc[optional<U>] const& rhs) requires (detail::enable_assign_from_other<T, U, const U&>); ---- [.small]#xref:beman/optional/optional-03/operator_assign-08.adoc[_» more..._]# Move assigns the value from `rhs` if it has one. [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- constexpr xref:beman/optional/optional-03.adoc[optional]& xref:beman/optional/optional-03/operator_assign-0d.adoc[operator=](xref:beman/optional/optional-03.adoc[optional]&& other) requires std::is_move_constructible_v<T> && std::is_move_assignable_v<T> && std::is_trivially_move_constructible_v<T> && std::is_trivially_move_assignable_v<T> = default; ---- [.small]#xref:beman/optional/optional-03/operator_assign-0d.adoc[_» more..._]# Move assigns the value from `rhs` if it has one. [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- constexpr xref:beman/optional/optional-03.adoc[optional<T>]& xref:beman/optional/optional-03/operator_assign-0b8.adoc[operator=](xref:beman/optional/optional-03.adoc[optional]&& rhs) noexcept(std::is_nothrow_move_constructible_v<T>) requires std::is_move_constructible_v<T> && std::is_move_assignable_v<T> && (!std::is_trivially_move_assignable_v<T>); ---- [.small]#xref:beman/optional/optional-03/operator_assign-0b8.adoc[_» more..._]# Assigns the stored value from `rhs` if it has one, destroying the old value if there [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<class U> constexpr xref:beman/optional/optional-03.adoc[optional<T>]& xref:beman/optional/optional-03/operator_assign-07.adoc[operator=](xref:beman/optional/optional-03.adoc[optional<U>]&& rhs) requires (detail::enable_assign_from_other<T, U, U>); ---- [.small]#xref:beman/optional/optional-03/operator_assign-07.adoc[_» more..._]# Resets the optional to an empty state. [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- constexpr xref:beman/optional/optional-03.adoc[optional<T>]& xref:beman/optional/optional-03/operator_assign-0f.adoc[operator=](xref:beman/optional/nullopt_t.adoc[nullopt_t] value) noexcept; ---- [.small]#xref:beman/optional/optional-03/operator_assign-0f.adoc[_» more..._]# Assigns the stored value from `u,` destroying the old value if there [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<class U = T> constexpr xref:beman/optional/optional-03.adoc[optional<T>]& xref:beman/optional/optional-03/operator_assign-0b6.adoc[operator=](U&& u) requires detail::enable_assign_forward<T, U>; ---- [.small]#xref:beman/optional/optional-03/operator_assign-0b6.adoc[_» more..._]# == Return Value optional& == Template Parameters [cols=2] |=== | Name | Description | *U* | |=== == Parameters [cols=2] |=== | Name | Description | *u* | |=== [.small]#Created with https://www.mrdocs.com[MrDocs]#