2012-09-02 7 views
5

私はこれに対する答えはノーだと思うが、私は確信したい。std ::とboost :: 's :: bind :: interfunctionを混在させると問題が発生しますか?

ファンクションのパラメータとしてstd::functionがある場合は、boost::bindを渡す際に問題がありますか?

は、編集:

は、私はあなたが、ブーストの\ bind.hを含む場合、ブースト::バインドで使用されるプレースホルダは、名前空間に直接インポートされ、そして、彼らはSTD ::バインドと互換性がないことを発見しました。 std :: bindでは、std :: placeholders :: _ 1のようにプレースホルダーを明示的に参照するか、他のtypedefを使用するか、魔法を使用して両方を同時に使用できるようにする必要があります。

+0

ネストされたバインド式が何であるかを認識し、その点で異なるライブラリがどのように相互作用するかを確認したい場合があります。 –

答えて

10

std::(及びboost::)の全体の目的functionは、それらがラムダ、ファンクタを含む正しいsignature-で呼び出すことができる任意関数オブジェクト、及び結合の任意の種類の結果を受け入れることができることです。彼らはあなたの関数オブジェクトがどこから来たのか、どんな型であるのか気にしません。

私は本当にあなたがしたいとは思っていませんが、あなたはお互いにそれらをバインドすることもできます。

+1

私のために確認してくれてありがとう。 std :: placeholders :: _ 1を使用してstdのプレースホルダーを明示的に指定する必要があるので、std :: bindのプレースホルダーと衝突する名前空間にプレースホルダーをインポートすることができました。 – cwm9

関連する問題