std::swap
は次のように宣言されています。
template <class T> void swap (T& a, T& b)
noexcept (is_nothrow_move_constructible<T>::value &&
is_nothrow_move_assignable<T>::value);
プログラムで例外を無効にすると ( g++ の場合と同様-fno-exceptions
) 、カスタムstd::swap
型が noexcept であるかどうかに関係なく、移動が有効になっている場合、カスタム型に対して移動操作が使用されますか?
編集:フォローアップの質問:
std::swap は、私のタイプに移動がある場合は常に移動を使用することに気付いた後、私の本当の質問は、次のような特性に何が起こるis_nothrow_move_assignable<>
かです ?
型に移動操作std::vector
がある場合、再割り当て時に常に移動を使用しますか?noexcept(true)