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)