std::swap
以这种方式声明:
template <class T> void swap (T& a, T& b)
noexcept (is_nothrow_move_constructible<T>::value &&
is_nothrow_move_assignable<T>::value);
如果我在我的程序中禁用异常(例如-fno-exceptions
for g++)std::swap
,如果它们启用了移动,无论它们是否为 noexcept,我的自定义类型都会使用移动操作?
编辑:后续问题:
在意识到如果我的类型有 std::swap 将始终使用移动之后,我真正的问题是像这样的特征会发生什么is_nothrow_move_assignable<>
?
std::vector
如果我的类型有noexcept(true)
移动操作,在重新分配时总是会使用移动吗?