我正在尝试使用std:map
类型的键和值制作一个std::any
Visual Studio 2017
std::map<std::any, std::any> m("lastname", "Ivanov");
std::cout << std::any_cast<std::string>(m["lastname"]) << std::endl;
给我一个
错误:二进制'<':未找到采用'const_Ty'类型的左操作数的运算符
答案 0 :(得分:0)
std::any
没有二进制“ <”运算符(小于)。如何为std::map
元素建立索引的默认方法。
解决方案可能包括:
使用自定义比较器,例如:
#include <map>
#include <any>
int main() {
auto elements = std::initializer_list<std::pair<const std::any, std::any>>{};
auto mymap = std::map(elements, [](const std::any& lhs, const std::any& rhs){return false;});
}
然后实现比较功能,而不是返回false
。