我认为以下减少的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