【发布时间】:2013-05-30 11:27:06
【问题描述】:
我有以下(简化的问题):
class Stream()
{
std::ofstream mStr;
public:
Stream() : mStr("file", ofstream::out)
{}
Stream(const Stream & rhs) = delete;
Stream(Stream && rhs) : mStr(move(rhs.mStr))
{}
void operator()(string& data)
{
mStr << data;
}
~Stream() = default;
};
该对象用于记录目的(测量数据),只会在短时间内使用,因此只要它还活着,它就会打开。现在的主要思想是这样使用它:
int main()
{
std::function<void (std::string&)> Logger = Stream();
for (std::string& data : DataList)
{
Logger(data);
}
}
我遇到了问题 (GCC 4.7.2)。
-
Stream类需要有一个复制构造函数,如果我这样做的话,虽然它没有被使用。 - 我无法移动
fstream。
这是一个编译器问题还是我在这里遗漏了一些基本的东西?
【问题讨论】:
标签: c++ gcc c++11 fstream move-semantics