C ++ std :: map с ключом в качестве вектора объектов, вызывающих ошибку: оператор __surrogate_fun c ': не найдено соответствующей перегруженной функции - PullRequest
0 голосов
/ 20 апреля 2020

Я пытаюсь создать карту 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

...