在阅读C ++ Primer第5版时,我对语法的确切含义感到困惑。特别是,我对less <>和hash <>中的模板参数列表后的空()感到好奇。
hash<string>()(s.bookNo); // () after <string>
less<T>()(v1, v2);
我猜想它会创建函数实例化,并在()的最后一组(即(s.bookNo))中传递参数
谢谢。
答案 0 :(得分:7)
hash<T>
和less<T>
不是函数-它们是类。 less<T>()
创建该类的临时实例; (v1, v2)
然后在该实例上调用其operator()
成员函数。