Почему 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;
}