2012-10-20 171 views
8

如果我有两个std::function s,如何检查两者是否具有相同的功能?检查两个std ::函数是否相等

附加信息:我有一个向量函数std::vector<std::function<void()>>,并向矢量添加另一个函数之前,我想检查它是否已包含。

+0

Lambdas可以完全等效,但由于它们没有==运算符,因此无法对它们进行比较。你最好使用unique_ptr –

+0

使用unique_ptr该句柄的功能如何? – danijar

+0

这似乎是重复的:https://stackoverflow.com/questions/3629835/why-is-stdfunction-not-equality-comparable –

回答

4

我不认为他们都可以比较。这里是一个example解释上的std ::功能比较几点

-1

一般std::functionboost::function没有可比性,因为他们需要存储的对象具有可比性,但不是所有的函数对象,也有lambda表达式所以operator==std功能boost没有方法来比较它们