constructor<>
...ライブラリが提供するファンクターアダプターがsig<>
テンプレートを定義しているにもかかわらず?
struct Porc
{
Porc(int x) {}
};
boost::bind
(
boost::lambda::constructor<Porc>(),
_1
)(1);
エラー:「structboost :: lambda::constructor」に「result_type」という名前の型がありません</p>
私がやろうとしているのは、intを受け取り、そのintを使用してPorcオブジェクトを作成して返すファンクターを作成することです。注:以下のように、ファンクター(Porc)のリターンタイプを明示的に指定すると、次のように機能します。
boost::bind<Porc>
(
boost::lambda::constructor<Porc>(),
_1
)(1);
私はラムダ式に比較的慣れていませんが、基本を理解したと思います。ここのドキュメントでは、一般に、BLLは任意の関数オブジェクトの戻り型を推測できないと述べています。ただし、特定の関数オブジェクトクラスに対してこの機能をBLLに与えるには2つのメソッドがあります。[...]result_typetypedefおよび[...]sigテンプレート。constructor<>
はライブラリが提供されているので、もちろん彼らはsig<>
テンプレートを宣言しました。