比较两个boost :: function

时间:2011-08-30 14:33:07

标签: c++ boost

void ff(int){} 

void Unscribe(const boost::function<void(int)>& f)
{
    std::map<int, boost::function<void(int)> > map;

    map[0] = ff;

    if( map[0] == f)
    {

    }  
}

Unscribe( ff ); 

我希望能够将两个boost :: function与相同的签名进行比较。 我应该修改什么才能使这段代码可编辑?

2 个答案:

答案 0 :(得分:14)

你做不到。阅读boost function FAQ的第一个条目:

  
      
  1. 为什么我不能将boost :: function对象与operator ==或。进行比较   操作者!=?
  2.         

    无法实现boost :: function对象之间的比较   “好”,因此不会实施。 ...

答案 1 :(得分:-1)

您是否希望比较签名或仿函数相等(两个仿函数指向相同的底层内存地址)?如果是后者,您可以使用boost/function_equal.hpp

提供的界面

Boost Function Equal

template<typename F, typename G> bool function_equal(const F& f, const G& g);