比较功能对象的类型签名

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

如何在方法签名中使用比较函数对象类型?例如,这很好:

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)然后无法编译(我几乎不胜感激,因为这是一种骇人听闻的技巧)。

c++ functor
1个回答
0
投票
set<int> s1(compInt);
© www.soinside.com 2019 - 2024. All rights reserved.