在阅读用于std::unordered_map的std::hash示例时,我注意到operator()函数被{}访问。
http://en.cppreference.com/w/cpp/utility/hash
result_type operator()(argument_type const& s) const
{
result_type const h1 ( std::hash<std::string>{}(s.first_name) );
result_type const h2 ( std::hash<std::string>{}(s.last_name) );
return h1 ^ (h2 << 1); // or use boost::hash_combine (see Discussion)
}
这里使用 {} 代表什么意思?
static operator()
。 - Daniel Hstd::hash
被称为std::hash<std::string>(s)
而不是带有额外的{}
,那么使用起来会更容易。你不能进行部分函数特化、lambda特化或重载,但可以进行部分类型特化。 - Daniel H