C++ std::stringstream重新设计可以在Visual Studio 2013上工作,但不能在Linux下工作

C++ std::stringstream重新设计可以在Visual Studio 2013上工作,但不能在Linux下工作,c++,linux,stringstream,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 我在尝试重新设计st

在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\u stringstream”& std::basic_stringstream::operator=(常量) std::basic_stringstream&)'stream=std::stringstream(str); ^


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


报告的bug可以追溯到4.7版本,在5.x中修复了它

您的Linux编译器版本是什么?它支持C++11吗?找到了重复:我更新到了g++5,我的代码已经编译好了。但现在它甚至都过不了起点。它无法在
std::thread
上创建线程。如何更新STL?请尝试使用-pthread。如果不确定,可以尝试一个简单的例子,然后问一个不同的问题。