首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有一个可以抛出的移动操作的只移动类的例子是什么?

有一个可以抛出的移动操作的只移动类的例子是什么?
EN

Stack Overflow用户
提问于 2014-01-31 06:16:15
回答 1查看 486关注 0票数 0

std::move_if_noexcept的定义如下(C++11 20.2.3/7-8):

代码语言:javascript
复制
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)

简单地说,如果move_if_noexcept(x)的move构造函数不抛出,或者x不是可复制的,那么x就会转换为rvalue。这让我想知道是否有任何常见的不可复制类型,但其移动构造函数可能会抛出。

在标准库中,我检查了不可复制类型unique_ptrfuturepromise、各种互斥类型、unique_lockcondition_variablepackaged_task,除非我误读了标准,否则它们都声明了它们的移动操作noexcept

在标准库(C++11或C++14)或常用的第三方库(例如Boost)中,是否存在移动操作可能抛出的唯一移动类型?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-31 09:18:41

fstream类是未声明not的移动构造函数的示例,并且复制构造函数已删除:ofstream

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21473649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档