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

< cpp‎ | experimental‎ | ranges‎ | utility/tagged

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

赋值 `that` 的内容给 `*this` 。

1-2) `tagged` 拥有默认化的复制和移动赋值运算符，它们调用 `Base` 的对应赋值运算符。
3) 源自带匹配标签的相异 `tagged` 特化的转换移动赋值运算符。等价于 static_cast<Base&>(*this) = static_cast<Other&&>(that); 。
4) 源自带匹配标签的相异 `tagged` 特化转换复制赋值运算符。等价于 static_cast<Base&>(*this) = static_cast<const Other&>(that); 。
5) 赋值 `that` 给 `Base` 子对象。等价于 static_cast<Base&>(*this) = std::forward<U>(that); 。

### 返回值

`*this` 。