constexpr variant& operator=( const variant& r )
- noexcept( mp_all<std::is_nothrow_copy_constructible<T>...,
- std::is_nothrow_copy_assignable<T>...>::value );
+ noexcept( mp_all<std::is_nothrow_copy_constructible<T>...>::value );
diff --git a/doc/html/variant2.html b/doc/html/variant2.html
index 918dab2..9019e21 100644
--- a/doc/html/variant2.html
+++ b/doc/html/variant2.html
@@ -1437,8 +1437,7 @@ there is exactly one occurrence of U
in T…
constexpr variant& operator=( const variant& r )
- noexcept( mp_all<std::is_nothrow_copy_constructible<T>...,
- std::is_nothrow_copy_assignable<T>...>::value );
+ noexcept( mp_all<std::is_nothrow_copy_constructible<T>...>::value );
U
in T…
If index() == j
, assigns the value contained in r
to the value
-contained in *this
.
Otherwise, equivalent to emplace<j>(get<j>(r))
.
emplace<j>(get<j>(r))
.
*this
.
constexpr variant& operator=( variant&& r )
- noexcept( mp_all<std::is_nothrow_move_constructible<T>...,
- std::is_nothrow_move_assignable<T>...>::value );
+ noexcept( mp_all<std::is_nothrow_move_constructible<T>...>::value );
*this
.
If index() == j
, assigns the value contained in std::move(r)
to the
-value contained in *this
.
Otherwise, equivalent to emplace<j>(get<j>(std::move(r)))
.
emplace<j>(get<j>(std::move(r)))
.
Tj
which is the type of the contained value after const
If index() == j
, assigns std::forward<U>(u)
to the value contained in
-*this
.
Otherwise, equivalent to emplace<j>(std::forward<U>(u))
.
emplace<j>(std::forward<U>(u))
.
Tj
which is the type of the contained value after const
The expression inside noexcept
is std::is_nothrow_constructible_v<Tj, U>
- && std::is_nothrow_assignable_v<Tj&, U>
.
+
The expression inside noexcept
is std::is_nothrow_constructible_v<Tj, U&&>
.
This operator does not participate in overload resolution unless
std::is_same_v<std::remove_cvref_t<T>, variant>
is false
,
std::is_constructible_v<Tj, U> && std::is_assignable_v<Tj&, U>
is
+
std::is_constructible_v<Tj, U&&> && std::is_assignable_v<Tj&, U&&>
is
true
, and
This function shall not participate in overload resolution unless
-std::is_constructible_v<U, A…>
is true
and U
occurs exactly once
+std::is_constructible_v<U, A&&…>
is true
and U
occurs exactly once
in T…
.
T…
.
This function shall not participate in overload resolution unless
-std::is_constructible_v<U, std::initializer_list<V>&, A…>
is true
+std::is_constructible_v<U, std::initializer_list<V>&, A&&…>
is true
and U
occurs exactly once in T…
.
Ti(std::forward<A>(a)…
- Exception Safety:
-
-
On exception:
-
-
--
-
If the list of alternatives contains monostate
, the contained value
-is either unchanged, or monostate{}
;
-
--
-
Otherwise, if the list of alternatives contains types for which
-is_nothrow_default_constructible_v
is true
, the contained value
-is either unchanged, or Tj{}
, where Tj
is the first such alternative;
-
--
-
Otherwise, the contained value is unchanged.
-
-
-
+Strong. On exception, the contained value is unchanged.
- Remarks:
-
This function shall not participate in overload resolution unless
-std::is_constructible_v<Ti, A…>
is true
.
+std::is_constructible_v<Ti, A&&…>
is true
.
Ti(il, std::forward<A>(a)…
On exception:
-If the list of alternatives contains monostate
, the contained value
-is either unchanged, or monostate{}
;
Otherwise, if the list of alternatives contains types for which
-is_nothrow_default_constructible_v
is true
, the contained value
-is either unchanged, or Tj{}
, where Tj
is the first such alternative;
Otherwise, the contained value is unchanged.
-Strong. On exception, the contained value is unchanged.
This function shall not participate in overload resolution unless
-std::is_constructible_v<Ti, std::initializer_list<V>&, A…>
is true
.
std::is_constructible_v<Ti, std::initializer_list<V>&, A&&…>
is true
.
Tj{}
, where Tj
is the first su
+ Note
+ |
+
+This function is provided purely for compatibility with std::variant .
+ |
+