【发布时间】:2011-09-28 09:23:54
【问题描述】:
STL 函子是这样实现的:
template<class T>
struct less{
bool operator()(T const& lhs, T const& rhs){
return lhs < rhs;
}
};
这让我们每次创建这样的仿函数时都会提到(可能是长的)类型。为什么它们没有像下面显示的那样实现?有什么原因吗?
struct less{
template<class T>
bool operator()(T const& lhs, T const& rhs){
return lhs < rhs;
}
};
这将使它们无需提及(可能很长)类型即可使用。
【问题讨论】:
-
从 C++14 开始,您可以使用提供
template<class T> std::less<T=void>的 transparant comparators 和包含模板化operator<的std::less<void>(对于其他仿函数也类似)。