constexpr variant& operator=(const variant& rhs);
constexpr variant& operator=(variant&& rhs) noexcept(see below);
template<class T> variant& operator=(T&& t) noexcept(see below);
variant<string, string> v; v = "abc";is ill-formed, as both alternative types have an equally viable constructor for the argument. — end note
is_nothrow_assignable_v<T&, T> && is_nothrow_constructible_v<T, T>