有没有任何地方可以确认这个问题?我不确定是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上进行了测试。
std::hash
没有为std::unique_ptr
进行特化。 - Mankarsestd::shared_ptr
的规范之后,与std::unique_ptr
相距甚远。 - Luc Dantonstd::move
而不是move
,这样就不会让 ADL 找到其他函数。 - Jonathan Wakely