首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么我不能移动std::ofstream?

为什么我不能移动std::ofstream?
EN

Stack Overflow用户
提问于 2015-02-28 06:48:41
回答 1查看 6K关注 0票数 21

看看之前关于SO的答案,似乎std::ostream是不可移动的,而std::ofstream应该是可移动的。但是,此代码

代码语言:javascript
复制
#include <fstream>

int main()
{
    std::ofstream ofs;
    std::ofstream ofs2{std::move(ofs)};
}

似乎无法在我尝试过的任何版本的gcc或clang中编译(使用--std=c++11或--std=c++14)。编译器错误略有不同,但下面是我针对gcc 4.9.0得到的结果

代码语言:javascript
复制
6 : error: use of deleted function 'std::basic_ofstream::basic_ofstream(const std::basic_ofstream&)'

根据标准,这是预期的行为吗?

请注意,之前也提出了一个非常类似的问题( Is std::ofstream movable? ),但标准似乎从那时起就发生了变化(如Why can't std::ostream be moved?中所述),使得这些答案过时了。当然,这些答案都不能解释为什么上面的代码不能编译。

在尝试使用ofstream的容器时遇到了这个问题,由于上面的原因而无法工作。

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

https://stackoverflow.com/questions/28775673

复制
相关文章

相似问题

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