Я пытаюсь создать карту std :: map с вектором объектов в качестве ключа.
struct Data {
int data;
bool isOptional = false;
Data(int cdata, bool cisOptional = false) {
data = cdata;
isOptional = cisOptional;
}
const bool operator < (const Data& other) {
return std::tie(data, isOptional) < std::tie(other.data, other.isOptional);
}
};
typedef std::map<std::vector<Data>, std::string> DataMap;
DataMap datamap;
std::vector<Data> testdata{ Data(1) };
std::vector<Data> testdata2{ Data(1) };
datamap[testdata] = "test";
std::cout << "Count: " << datamap.count(testdata2) << std::endl;
Однако после создания записи на карте с помощью testdata
, Компилятор выдает ошибки
Ошибка C2672 'оператор __surrogate_fun c': не найдено соответствующей перегруженной функции
Ошибка C2893 Не удалось специализировать шаблон функции 'неизвестный тип std :: less :: operator () (_ Ty1 &&, _ Ty2 &&) noexcept () const '
Редактировать
ИСПРАВЛЕНО
изменил сигнатуру перегрузки оператора из этой const bool operator < (const Data& other)
к этому bool operator < (const Data& other) const