hash <T>,less <T>函数:模板参数后的空括号

时间:2019-07-14 16:51:23

标签: c++ c++11

在阅读C ++ Primer第5版时,我对语法的确切含义感到困惑。特别是,我对less <>和hash <>中的模板参数列表后的空()感到好奇。

hash<string>()(s.bookNo); // () after <string>

less<T>()(v1, v2);

我猜想它会创建函数实例化,并在()的最后一组(即(s.bookNo))中传递参数

谢谢。

1 个答案:

答案 0 :(得分:7)

hash<T>less<T>不是函数-它们是类。 less<T>()创建该类的临时实例; (v1, v2)然后在该实例上调用其operator()成员函数。