提升功能并提升lambda

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)

ken*_*ytm 8

您不能直接使用占位符调用函数.你必须使用bind.

boost::function<int (int)> g2 = 2 * boost::lambda::bind(g, boost::lambda::_1);
Run Code Online (Sandbox Code Playgroud)

(例子)