pyt*_*hor 4 c++ lambda boost function
我已经看到了一些相关的问题,但我仍然感到困惑.这种语法有什么问题:
boost::function<int (int)> g = f;
boost::function<int (int)> g2 = 2*g(boost::lambda::_1);
Run Code Online (Sandbox Code Playgroud)
我在gcc 4.3.4上尝试使用boost 1.35和1.38(这是我躺在的两个装置),它们都给出了错误的变化:
no match for call to '(boost::function<int ()(int)>) (const boost::lambda::lambda_functor<boost::lambda::placeholder<1> >&)'
Run Code Online (Sandbox Code Playgroud)
您不能直接使用占位符调用函数.你必须使用bind.
boost::function<int (int)> g2 = 2 * boost::lambda::bind(g, boost::lambda::_1);
Run Code Online (Sandbox Code Playgroud)
(例子)