Стандартная библиотека реализует 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;
}