2010-07-14 53 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