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

Use*_*482 1 c++ c++11

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

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

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

Run Code Online (Sandbox Code Playgroud)

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

提前致谢。

Igo*_*nik 7

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