2010-07-14 79 views
3

我有一个包含boost :: function作为其参数之一的类。我必须使这个类的平等可比,但boost ::函数不是平等可比的。这个问题有一个简单的解决方法吗?C++ Boost函数比较

谢谢, Gokul。

+0

您使用的是什么版本的boost?你是如何创建仿函数的? – 2010-07-14 11:08:45

+0

boost 1.43 - 最新版本 – Gokul 2010-07-14 15:19:24

回答

2

boost :: function不是eq_compare,因为有很好的方法来处理许多函子不是eq_compare的事实。这里有一点洞察它:http://www.boost.org/doc/libs/1_35_0/doc/html/function/faq.html#id690470

不幸的是,增援决定不提供一个基于政策的方法,这将允许我们选择替代方案,即“eq-可比拟的函数只有或萧条”的实施,离开我们有点塞满了。有可能是这种情况了几个蹩脚的解决方法,但我建议要么:共

  1. 沟的boost ::功能,并推出自己的,如果你真的需要这个东西eq_comparable。 或
  2. 看看您的问题是否可以用非常不同的方式解决。例如,许多人使用功能<>来实现一种事件系统。如果是这样的话,那么你应该看看boost :: signals。
+0

我从来没有真正理解为什么,常规的函数指针是可比较的,所以为什么你不能比较boost函数,这对我来说似乎是函数指针的包装? – 2010-08-31 07:44:12