检查两个std::function是否相等

9
如果我有两个 std::function,如何检查它们是否持有相同的函数?
额外信息: 我有一个函数向量 std::vector<std::function<void()>>,在向量中添加另一个函数之前,我想检查它是否已经存在。

Lambda表达式可以完全等效,但由于它们没有==运算符,因此无法进行比较。最好使用unique_ptr。 - Richard J. Ross III
使用unique_ptr,它如何处理函数? - danijar
这似乎是一个重复的问题:https://dev59.com/TnA65IYBdhLWcg3wyh57 - MW_dev
2个回答

4

我认为这两者不能进行比较。这里有一个例子,以解释std::function比较的一些要点。


0
通常情况下,std::functionboost::function不可比较,因为它们需要其存储的对象是可比较的,但并非所有函数对象和 lambda 都有 operator==,因此 stdboost 函数无法比较它们。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接