这是我从 C++ Primer ver5 第 16 章获得的示例:
template <typename U, typename F=std::less<U>>
int compare(const U& v1, const U& v2, F f = F())
{
if (f(v1, v2)) return -1;
if (f(v2, v1)) return 1;
return 0;
}
我对这里的用法有点困惑:
typename F=std::less<U>
根据我的理解,
typename F
指的是F
这里是一种类型,我们如何为它分配一个函数对象std::less
呢?如果是这样,是否意味着我也可以做诸如auto F = std::less<U>;
或typedef F std::less<U>
之类的事情?
或者也许我应该将其视为
using F = std::less<U>
?