3

引数の 1 つとして boost::function を含むクラスがあります。このクラスの同等性を比較可能にする必要がありますが、boost::function は同等性を比較できません。この問題の簡単な回避策はありますか?

ありがとう、ゴクル。

4

1 に答える 1

2

boost::function は eq_compare ではありません。これは、多くのファンクタが eq_compare ではないという事実を処理する適切な方法があるためです。ここに少し洞察があります:http://www.boost.org/doc/libs/1_35_0/doc/html/function/faq.html#id690470

残念ながら、boosties は、代替手段、つまり「eq-comparable functor のみまたはバスト」の実装を選択できるようにするポリシーベースのアプローチを提供しないことを決定したため、ここで少し詰め込みました。この状況にはいくつかのくだらない回避策があるかもしれませんが、次のいずれかをお勧めします。

  1. この eq_comparable が本当に本当に必要な場合は、boost::function を完全に捨てて、自分で作成してください。また
  2. 問題が非常に異なる方法で解決できるかどうかを確認してください。たとえば、多くの人が function<> を使用して一種のイベント システムを実装しています。その場合は、boost::signals を確認する必要があります。
于 2010-07-14T11:26:39.927 に答える