0

如何比较两个函数对象是否拥有相同的函数引用?

struct A {
    void b(){}
}
int main() {
    A a;
    auto f1 = std::bind(&A::b, a);
    auto f2 = std::bind(&A::b, a);

    f1 == f2 // ???
}
4

1 回答 1

1

保证结果std::bind只能是可调用的并且具有成员类型result_type。没有符合标准的方法来比较绑定函数。

返回值

一个未指定类型 T 的函数对象,其中 std::is_bind_expression::value == true,并且可以存储在 std::function 中。如果 f 和所有 args 都是可移动的,则该对象是可移动的,否则是可复制的。该类型定义了以下成员:

来自http://en.cppreference.com/w/cpp/utility/functional/bind

于 2013-09-15T13:56:24.310 回答