Нет ли специализации std :: hash для стандартных контейнеров?

Я просто был немного удивлен тем, что не могу просто использовать

std::unordered_set > test;

, потому что, похоже, нет специализация std :: hash для std :: array s. Это почему? Или я просто не нашел? Если его действительно нет, можно ли упростить следующую попытку реализации?

namespace std
{
    template
    struct hash >
    {
        typedef array argument_type;
        typedef size_t result_type;

        result_type operator()(const argument_type& a) const
        {
            hash hasher;
            result_type h = 0;
            for (result_type i = 0; i < N; ++i)
            {
                h = h * 31 + hasher(a[i]);
            }
            return h;
        }
    };
}

Я действительно считаю, что это каким-то образом должно быть частью стандартной библиотеки.

26
задан Community 23 May 2017 в 12:33
поделиться