模板定义的基础问题

template <typename T>int compare(const T &v1, const T &v2)
{
    if (less<T>()(v1, v2)) return -1;//这里的less<T>后面为什么有两对括号?第一对为何是空的?
}
阅读 2.4k
1 个回答

less是一个函数对象,所谓函数对象就是一个重载了调用运算符(就是“()”运算符)的类,它的对象可以“像函数一样使用”,所以叫做函数对象,第一个括号表示调用构造函数,后面的括号就是他的参数,你这个应该是C++ Primer上的例子吧,具体请看C++ Primer 5th第506页对函数调用运算符的介绍。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题