std::greater{} 和 std::greater<int>() 有什么区别?

Shi*_*Xie 4 c++ stl

有些人写

std::nth_element(v.begin(), v.begin()+1, v.end(), std::greater{});
Run Code Online (Sandbox Code Playgroud)

还有一些是这样写的

std::nth_element(v.begin(), v.begin()+1, v.end(), std::greater<int>());
Run Code Online (Sandbox Code Playgroud)

之间是什么THRE diffrencestd::greater{}和std::greater<int>()?

Sam*_*hik 6

这是 C++14 的新功能,这导致了两个完全不同的类。

在 C++14 中,std::greater为其模板参数获取默认值:void。

您最终会得到std::greater<void>或std::greater<int>。

std::greater<void>是推导其参数的所谓“透明”比较器的特化,请参阅其参考以获取更多信息。