MainActivity
我运行上面的代码,但失败了。 我使用-std = c ++ 11在Ubuntu12.04和g ++ - 5(gcc版本5.4.1 20160904(Ubuntu 5.4.1-2ubuntu1~12.04))上用g ++ 4.9编译它,它会在下面引出相同的错误信息。< / p>
错误:使用已删除的函数'std :: basic_ofstream&amp; 的std :: basic_ofstream ::运算符=(const的 std :: basic_ofstream&amp;)'Map [name] = std :: move(ofs);
/ usr / include / c ++ / 4.9 / fstream:602:11:注意:'std :: basic_ofstream&amp; 的std :: basic_ofstream ::运算符=(const的 std :: basic_ofstream&amp;)'被隐式删除,因为默认值 定义将是不正确的: class basic_ofstream:public basic_ostream&lt; _CharT,_Traits&gt;
答案 0 :(得分:3)
GCC 5.1中添加了对移动iostream的支持,因此您无法使用GCC 4.9。这在4.9版的libstdc ++手册中有记录:https://gcc.gnu.org/onlinedocs/gcc-4.9.4/libstdc++/manual/manual/status.html#status.iso.2011
27.5 | Iostreams基类|部分|缺少basic_ios上的移动和交换操作。缺少io_errc和iostream_category。 ios_base :: failure不是从system_error派生的。缺少ios_base :: hexfloat
27.6 |流缓冲区| Y |
27.7 |格式化和操纵器|部分|缺少移动和交换操作缺少get_time和put_time操纵器
27.8 |基于字符串的流|部分|缺少移动和交换操作
27.9 |基于文件的流|部分|缺少移动和交换操作
GCC 5.x支持它并且运行正常,所以你必须做错了(可能忘记使用-std=c++11
,或者指向4.9标题,这肯定是行不通的。)