【问题标题】:Boost function and boost lambdaBoost函数和boost lambda
【发布时间】:2011-06-23 15:43:21
【问题描述】:

我已经看到了一些相关的问题,但我仍然感到困惑。这个语法有什么问题:

boost::function<int (int)> g = f;
boost::function<int (int)> g2 = 2*g(boost::lambda::_1);

我已经在 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> >&)'

【问题讨论】:

    标签: c++ function boost lambda


    【解决方案1】:

    您不能直接调用带有占位符的函数。你必须use bind。

    boost::function<int (int)> g2 = 2 * boost::lambda::bind(g, boost::lambda::_1);
    

    (Example)

    【讨论】:

      【解决方案2】:

      我建议你放弃Boost.Lambda,因为它已经过时了。支持 C++0x 的编译器提供原生 lambda,更容易理解。 GCC 4.4 或更高版本可以使用,Visual Studio 2010 也支持 C++0x。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-02-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多