std :: stringstream重新分配适用于Visual Studio 2013但不适用于Linux

时间:2015-06-25 23:56:50

标签: c++ linux stringstream

在Windows上取得圆满成功之后,我只是想在Linux上编译以下代码:

std::string str = stream.str();

auto decrement = [](char c) { return c - 100; };

std::transform(str.begin(), str.end(), str.begin(), decrement);
stream = std::stringstream(str); // LINE ACCUSING ERROR

我尝试重新设置std :: stringstream时收到的错误是:

  

158:错误:使用已删除的函数'std :: basic_stringstream&   的std :: basic_stringstream ::运算符=(const的   std :: basic_stringstream&)'stream = std :: stringstream(str);            ^

1 个答案:

答案 0 :(得分:3)

std::stringstream不可复制,但只能移动(自C ++ 11起)。我的猜测是你使用g ++ 4.9或更早版本,即使它支持C ++ 11,它也不完全支持流的移动语义。 g ++ 5及更高版本编译代码。

报告的错误日期回溯到4.7,已修复为5.x https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54316