今天把windows下的文件流读写代码转到Linux下时一直提示如题所示错误,有段时间没写过cmake了一时半会不知道哪里出了问题,然后查到出错的地方看到fstream的源码,
if __cplusplus >= 201103L
// 27.8.3.2 Assign and swap:
basic_fstream&
operator=(const basic_fstream&) = delete;
basic_fstream&
operator=(basic_fstream&& __rhs)
{
__iostream_type::operator=(std::move(__rhs));
_M_filebuf = std::move(__rhs._M_filebuf);
return *this;
}
才想起来应该指定编译器的C++版本为C++11,即在CMakeLists里面加上
set(CMAKE_CXX_FLAGS "-std=c++11")
搞定。以后再出现类似错误可以按此思路解决。