标准库使用模板结构实现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;
}
std::hash<int>()(1337)
来使用未命名的临时结构体。 - user743382