我今天正在学习默认模板参数,一开始一切正常,但现在我遇到了一些问题。
template <typename T, typename F = std::less<T>>
int compare(const T &v1, const T &v2, F f = F()) {
if (f(v1, v2)) return -1;
if (f(v2, v1)) return 1;
return 0;
}
我知道F
是可调用对象的类型,而且f
是可调用对象,但这是什么F()
意思呢?类型和运算符()?
让我更困惑的是,F()
它不接受任何东西,而f(v1, v2)
接受 2 个对象。初始化让我很困惑。
如果有人能帮我弄清楚这些代码,我将非常感激。Thx。