C++ 什么';这是一个仅移动类的示例,该类具有可以抛出的移动操作?
C++ 什么';这是一个仅移动类的示例,该类具有可以抛出的移动操作?,c++,c++11,move-semantics,C++,C++11,Move Semantics,std::move_if_noexcept定义如下(C++11 20.2.3/7-8): 模板 typename条件::值 &&是可构造的::值, 常数T&, T&& >::键入move_if_noexcept(T&x)noexcept; 返回:std::move(x) 在简单的英语中,move\u if_noexcept(x)在x的move构造函数未抛出或x不可复制构造时,将x强制转换为右值。这让我想知道是否有任何常见的类型是不可复制的,但其move构造函数可能会抛出 在标准库中,我检查了不
std::move_if_noexcept
定义如下(C++11 20.2.3/7-8):
模板
typename条件::值
&&是可构造的::值,
常数T&,
T&&
>::键入move_if_noexcept(T&x)noexcept;
返回:std::move(x)
在简单的英语中,move\u if_noexcept(x)
在x
的move构造函数未抛出或x
不可复制构造时,将x
强制转换为右值。这让我想知道是否有任何常见的类型是不可复制的,但其move构造函数可能会抛出
在标准库中,我检查了不可压缩类型unique\u ptr
,future
,promise
,各种互斥锁类型,unique\u lock
,条件变量
,以及打包任务
,除非我误读了标准,它们都声明了它们的移动操作noexcept
在标准库(C++11或C++14)或常用的第三方库(例如Boost)中是否存在仅移动类型移动操作可能抛出的位置?fstream类是未声明noexcept的移动构造函数和已删除的复制构造函数的示例:fstream类是未声明noexcept的移动构造函数和已删除的复制构造函数的示例:fstream类是未声明noexcept和已删除的移动构造函数的示例构造函数已删除:fstream类是未声明为noexcept的移动构造函数和已删除的复制构造函数的示例:@remyabel:Vector是可复制的。@remyabel:Vector是可复制的。@remyabel:Vector是可复制的。@remyabel:Vector是可复制的。
template <class T>
typename conditional<!is_nothrow_move_constructible<T>::value
&& is_copy_constructible<T>::value,
const T&,
T&&
>::typemove_if_noexcept(T& x) noexcept;
Returns: std::move(x)