有什麼地方可以確認嗎?我不確定這是GCC還是我的代碼問題。例如,下面的代碼不能編譯:GCC 4.4/4.5 unique_ptr不適用於unordered_set/unordered_map
#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'。 – Mankarse
@Mankarse這裏有一個專門的知識,但是它出現在20.7.2.6智能指針哈希支持[util.smartptr.hash](n3290)之後,它就出現在'std :: shared_ptr'的規範之後,有點遠離'std :: unique_ptr'。 –
N.B.你應該說'std :: move'不是'move',你不希望ADL找到不同的函數。 –