# std::experimental::ranges::tagged<Base,Tags...>::operator=

From cppreference.com
< cpp‎ | experimental‎ | ranges‎ | utility/tagged

tagged &operator=( tagged&& that ) = default; | (1) |
tagged &operator=( const tagged& that ) = default; | (2) |
template< class Other > requires Assignable<Base&, Other> constexpr tagged& operator=( ranges::tagged<Other, Tags...>&& that ) noexcept(std::is_nothrow_assignable<Base&, Other>::value); | (3) |
template< class Other > requires Assignable<Base&, const Other&> constexpr tagged& operator=( const ranges::tagged<Other, Tags...>& that ); | (4) |
template< class U > requires Assignable<Base&, U> && !Same<std::decay_t<U>, tagged> constexpr tagged& operator=( U&& that ) noexcept(std::is_nothrow_assignable<Base&, U>::value); | (5) |

Assigns the contents of that to *this.

1-2) `tagged` has defaulted copy and move assignment operators that invoke the corresponding assignment operator of `Base`.
3) Converting move assignment from a different `tagged` specialization with matching tags. Equivalent to static_cast<Base&>(*this) = static_cast<Other&&>(that);.
4) Converting copy assignment from a different `tagged` specialization with matching tags. Equivalent to static_cast<Base&>(*this) = static_cast<const Other&>(that);.
5) Assigns that to the `Base` subobject. Equivalent to static_cast<Base&>(*this) = std::forward<U>(that);.

### Return value

*this.

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/experimental/ranges/utility/tagged/operator%3D&oldid=155627"