我有什么地方可以证实吗?我不确定这是GCC还是我的
代码的问题.例如,以下
代码无法编译:
#include <unordered_set>
#include <memory>
using namespace std;
int main() {
unordered_set<unique_ptr<int> > s;
unique_ptr<int> p(new int(0));
s.insert(move(p));
return 0;
}
错误信息太大,我不想放在这里. GCC版本是4.5.3,编译标志是-std = gnu 0x.也在4.4.5上测试过.
你的
代码是正确的.这是GCC 4.5中的一个已知问题.它已在4.6中修复.见
@L_
404_0@.它也会影响有序容器(std :: map,std :: set等).可能最简单的
解决方法(略有
性能损失)是使用std :: shared_ptr而不是std :: unique_ptr.
原文链接:https://www.f2er.com/c/116830.html