如何理解C++11中的默认模板参数?

问题描述 投票:0回答:1

这是我从 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>

c++ templates types default
1个回答
0
投票

我们如何为它分配一个函数对象 std::less ?

std::less<U>
不是函数对象,而是充当函数对象类型的类类型。参见例如cppreference.com 上的参考

© www.soinside.com 2019 - 2024. All rights reserved.