如何比较功能对象

时间:2013-09-15 13:53:06

标签: c++ c++11

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

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

    f1 == f2 // ???
}

1 个答案:

答案 0 :(得分:1)

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

  

返回值

     

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

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