2016-04-15 9 views
0

私は、後で使うためにハッシュテーブルに格納できるnew_ptr(パラメータ付き)にboost ::関数を取得しようとしています。モジュールのコンストラクタに使用するIDのレジストラの一種。以下は、単純化の問題である:boost :: lambda :: bind from new_ptr with parameters with

#include <boost/lambda/bind.hpp> 
#include <boost/lambda/construct.hpp> 
#include <boost/function.hpp> 

using namespace boost::lambda; 

struct TestObject 
{ 
    TestObject(int p){} 
}; 

void doStuff() 
{ 
    boost::function<TestObject*(int)> tf1 = bind(new_ptr<TestObject>(), _1); 
} 

自体による結合作品が、ブーストの構文::それは私を与えるので機能は、オフにする必要があります

error C2664: 'TestObject::TestObject(int)' : cannot convert parameter 1 from 'boost::lambda::lambda_functor<T>' to 'int' BOOST\1.57.0\boost\lambda\construct.hpp 146 1 

私は前にこれをやりましたパラメータを持たないコンストラクタ(素晴らしい)。私は何が欠けているか、私が不可能な何かをしようとしているかどうかを正確に把握することはできません。

ブーストv1.57.0およびmsvc 2012(v110)でコンパイルします。

+1

あなたはどのファイルを含んでいますか? [mcve]を入力してください。 – Barry

+0

編集されました。 – jinc

+0

まだそのまま私のためにコンパイルします。 – Barry

答えて

0

コードはあなたが、あなたのVSをアップグレードMSVC 2015のVisual Studio 2012を再設定するか、コマンドラインからコンパイルのlib/DLLにあなたの機能をカプセル化することstandalone MSVC 2015

にコンパイルされます。

+0

お気軽にご連絡ください。残念なことに、私のための即時の可能性はありません。 – jinc

関連する問題