Assign to this object the specified value. The alternative corresponding to value is the best match among all alternatives for which the expression t_ALT_TYPE x[]= {std::forward<t_TYPE>(value)}; is well formed, and this operator participates in overload resolution only if there is a unique best matching alternative and that alternative is both constructible and assignable from value. If this variant already holds the alternative corresponding to value, the contained value is assigned to from value; otherwise, any contained value is destroyed and the alternative corresponding to value is direct‐initialized from value. Note that if the construction of a new alternative object exits via an exception, this variant object may be left in a valueless by exception state. This is different from the standard, which requires a temporary alternative object to be constructed if such construction is not noexcept (see [variant.assign]for details). The standard behavior causes unnecessary performance degradation in cases where the alternative constructor does not throw, yet is not marked noexcept; this behavior is therefore not implemented in bsl::variant. For simplicity of implementation, this method also differs from the standard in the following ways: * constexpr is not implemented * noexcept specification is not implemented