boost::phoenix::function
パラメータを使用してラムダ関数に基づいて呼び出そうとしましたが 、失敗しました。このようにパラメータなしで呼び出すと、次のようになります。
const auto closure = [](){
cout<< "test" << endl;
};
typedef decltype(closure) ClosureType;
const boost::phoenix::function<ClosureType> lazyFunc (std::move(closure));
lazyFunc()();
すべてがうまくコンパイルされます。しかし、ラムダの少なくとも1つのパラメーターを宣言すると、次のようになります。
const auto closure = [](int& param) { cout<<"Test" << param << endl; };
typedef decltype(closure) ClosureType;
const boost::phoenix::function<ClosureType> lazyFunc (std::move(closure));
lazyFunc(arg1)(a);
コンパイルは、 boost::result_ofの奥深くにある途方もないスタックトレースで失敗します