|
4019 | 4019 | This function shall not participate in overload resolution unless
|
4020 | 4020 | \tcode{is_copy_constructible_v<$T_i$> \&\& is_move_constructible_v<$T_i$> \&\& is_copy_assignable_v<$T_i$>}
|
4021 | 4021 | is \tcode{true} for all $i$.
|
4022 |
| -If an exception is thrown during the call to $T_j$'s copy assignment, |
| 4022 | +\begin{itemize} |
| 4023 | +\item If an exception is thrown during the call to $T_j$'s copy assignment, |
4023 | 4024 | the state of the contained value is as defined by the exception safety
|
4024 | 4025 | guarantee of $T_j$'s copy assignment; \tcode{index()} will be $j$.
|
4025 |
| -If an exception is thrown during the call to $T_j$'s copy construction |
| 4026 | +\item If an exception is thrown during the call to $T_j$'s copy construction |
4026 | 4027 | (with $j$ being \tcode{rhs.index()}), \tcode{*this} will remain unchanged.
|
4027 |
| -If an exception is thrown during the call to $T_j$'s move construction, |
| 4028 | +\item If an exception is thrown during the call to $T_j$'s move construction, |
4028 | 4029 | the \tcode{variant} will hold no value.
|
| 4030 | +\end{itemize} |
4029 | 4031 | \end{itemdescr}
|
4030 | 4032 |
|
4031 | 4033 | \indexlibrarymember{operator=}{variant}%
|
|
4062 | 4064 | \tcode{true} for all $i$.
|
4063 | 4065 | The expression inside \tcode{noexcept} is equivalent to:
|
4064 | 4066 | \tcode{is_nothrow_move_constructible_v<$T_i$> \&\& is_nothrow_move_assignable_v<$T_i$>} for all $i$.
|
4065 |
| -If an exception is thrown during the call to $T_j$'s move construction |
| 4067 | +\begin{itemize} |
| 4068 | +\item If an exception is thrown during the call to $T_j$'s move construction |
4066 | 4069 | (with $j$ being \tcode{rhs.index())}, the \tcode{variant} will hold no value.
|
4067 |
| -If an exception is thrown during the call to $T_j$'s move assignment, |
| 4070 | +\item If an exception is thrown during the call to $T_j$'s move assignment, |
4068 | 4071 | the state of the contained value is as defined by the exception safety
|
4069 | 4072 | guarantee of $T_j$'s move assignment; \tcode{index()} will be $j$.
|
| 4073 | +\end{itemize} |
4070 | 4074 | \end{itemdescr}
|
4071 | 4075 |
|
4072 | 4076 | \indexlibrarymember{operator=}{variant}%
|
|
4121 | 4125 | \pnum
|
4122 | 4126 | The expression inside \tcode{noexcept} is equivalent to:
|
4123 | 4127 | \tcode{is_nothrow_assignable_v<$T_j$\&, T> \&\& is_nothrow_constructible_v<$T_j$, T>}.
|
4124 |
| -If an exception is thrown during the assignment of \tcode{std::forward<T>(t)} |
| 4128 | +\begin{itemize} |
| 4129 | +\item If an exception is thrown during the assignment of \tcode{std::forward<T>(t)} |
4125 | 4130 | to the value contained in \tcode{*this}, the state of the contained value and
|
4126 | 4131 | \tcode{t} are as defined by the exception safety guarantee of the assignment
|
4127 | 4132 | expression; \tcode{valueless_by_exception()} will be \tcode{false}.
|
4128 |
| -If an exception is thrown during the initialization of the contained value, |
| 4133 | +\item If an exception is thrown during the initialization of the contained value, |
4129 | 4134 | the \tcode{variant} object might not hold a value.
|
| 4135 | +\end{itemize} |
4130 | 4136 | \end{itemdescr}
|
4131 | 4137 |
|
4132 | 4138 | \rSec3[variant.mod]{Modifiers}
|
|
0 commit comments