Использование std :: array в качестве ключа для QHash - PullRequest
2 голосов
/ 20 сентября 2019

Я пытаюсь использовать std :: array в качестве ключа для класса QHash:

QHash<std::array<char, 6>, QString> _hash;

При необходимости я перегружен функцией qHash:

inline uint qHash(const std::array<char, 6> &key, uint seed)
{
    return ::qHashBits(key.data(), key.size(), seed);
}

AnОператор == поддерживается самим std :: array.Но при компиляции я получаю ошибку " нет соответствующей функции для вызова qHash(const std::array<char, 6>&)".

Та же самая ситуация с std :: tuple.Хотя std :: pair работает нормально.Так делают регулярные структуры.

Что я делаю не так?


UPD

Я пробовал также форму qHash с одним аргументом:

inline uint qHash(const std::array<char, 6> &key)
{
    return ::qHashBits(key.data(), key.size(), 0);
}

Точно такой же результат.


UPD2

Вот пример файла main.cpp.Нет другого кода в проекте.

#include <array>
#include <QHash>

static QHash<std::array<char, 6>, QString> hashByArray;

uint qHash(const std::array<char, 6>& key)
{
    return 0;
}

int main(int argc, char *argv[])
{
    hashByArray.insert({ 0, 0, 0, 0, 0, 0 }, "Hello");
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...