1
也許我很愚蠢,但我沒看到這個代碼的問題是什麼。我開始懷疑我的工具。我正在使用Clang(C++ 11)和它的libC++。如果是我的錯,我很抱歉,並事先誰指出我的愚蠢感謝,但如果沒有的話,也許這是一個更深層次的問題..聲明模板類型來調用make_pair
std::map<int, bool> map_;
map_.insert(std::make_pair<int, bool>(5, true)); //Use a literal, compiles OK
int x = 5;
map_.insert(std::make_pair<int, bool>(x, true)); //Use a local of same type, compile error: 'no known conversion from 'int' to 'int &&' for 1st argument'
你不應該提供模板參數,但讓扣做的工作:'的std :: make_pair(X,真) ' – juanchopanza
'std :: make_pair'通常會接受並給它一個'int&&&',或'int&'類型。現在你已經去做了'int &&',它不能用於左值。 – chris
是的,修復它。但我想知道爲什麼......強制執行匹配參數的函數的模板版本應該會產生相同的實現,當然? – NitrousUK