Я пытаюсь использовать 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;
}