Почему std :: hash структура вместо функции?

Стандартная библиотека реализует std :: hash как шаблонную структуру, которая специализируется для разных типов. Используется так:

#include <iostream>
#include <functional>

int main()
{
    std::hash<int> hasher;
    std::cout << hasher(1337) << std::endl;

    return 0;
}

Мой вопрос заключается в том, что является причиной этого выбора дизайна. Почему это не реализовано как шаблонная функция и не используется так:

#include <iostream>
#include <functional>

int main()
{
    std::cout << std::hash<int>(1337) << std::endl;

    return 0;
}

Ответы на вопрос(2)

Ваш ответ на вопрос