Remarks: If an exception is thrown during the call to function 
swap(GET<i>(*this), GET<i>(rhs)),
the states of the contained values of 
*this and of 
rhs are
determined by the exception safety guarantee of 
swap for lvalues of
Ti with 
i being 
index().  If an exception is thrown during the exchange of the values of 
*this
and 
rhs, the states of the values of 
*this and of 
rhs
are determined by the exception safety guarantee of 
variant's move constructor
.The exception specification is equivalent to the logical 
and of
is_nothrow_move_constructible_v<Ti> && is_nothrow_swappable_v<Ti> for all 
i.