我認爲以下減少的C++ 11代碼應該是有效的。g ++編譯器錯誤對已刪除賦值操作符<string,string>
unordered_map<string,string> test;
auto it = remove_if(test.begin(), test.end(),
[] (const decltype(test)::value_type &entry) { return true; });
但是它失敗克++ 6.3編譯,抱怨的std ::對已刪除的賦值運算符,但AFAIK該操作員不會被刪除。
/usr/include/c++/6/bits/stl_algo.h:868:16: error: use of deleted function ‘std::pair<_T1, _T2>& std::pair<_T1, _T2>::operator=(...
*__result = _GLIBCXX_MOVE(*__first);
這是一個編譯器/ glibc錯誤還是代碼真的無效,出於某種原因,我看不到?
不能在我自己的答案上提出你:感謝編輯,確實is_assignable需要分配類型和受託人。 – spectras