c – std :: ofstream是否可移动?
发布时间:2020-12-16 03:09:16 所属栏目:百科 来源:网络整理
导读:我在MSVC10中有这个编译好的地图: std::mapstd::string,std::ofstream m_logFiles; 但是在ubuntu使用g 4.5与C 0x启用,我得到以下错误信息: /usr/include / c /4.5/bits/ios_base.h|785|error:’std :: ios_base :: ios_base(const std :: ios_base)’是私
我在MSVC10中有这个编译好的地图:
std::map<std::string,std::ofstream> m_logFiles; 但是在ubuntu使用g 4.5与C 0x启用,我得到以下错误信息: /usr/include / c /4.5/bits/ios_base.h|785|error:’std :: ios_base :: ios_base(const std :: ios_base&)’是私有的 通过使用指针而不是对象,我解决了这个问题. 使用g 4.6.1没有帮助. 编辑:阅读评论我进一步挖了一下,发现插入是导致问题,而不是映射的声明. 阅读Cubbi的链接我试过以下: #include <string> #include <fstream> #include <map> using namespace std; int main() { map<string,ofstream> m_logFiles; ofstream st; m_logFiles.insert(make_pair<string,ofstream>(string("a"),move(st))); return 0; } 但还是没有运气. g抱怨使用b删除的复制构造函数. 解决方法
std :: ofstream是可移动的.这个程序使用clang / libc为我编译:
#include <string> #include <fstream> #include <map> int main() { std::map<std::string,std::ofstream> m_logFiles; } 参考文献27.9.1.11 [ofstream.cons]. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |