如何在方法签名中使用比较函数对象类型?例如,这很好:
struct compInt {
bool operator() (const int a, const int b) { return a < b; }
};
set<int> s1(compInt);
set<int,compInt> s2;
但是我想这样做:
void func (____ x)
{
set<int> s(x);
}
我不想这样做:
template<typename C>
void func (C& c)
{
set<int> s(c);
}
并且function<bool(const int,const int)>
不起作用。我尝试将compInt::operator()
设为虚拟,所以我可以这样做:
void func (compInt& ci)
并传递派生对象,但实际上set<int> s(ci)
然后无法编译(我几乎不胜感激,因为这是一种骇人听闻的技巧)。
set<int> s1(compInt);