【问题标题】:boost bind or lambda functor that returns a constant返回常量的 boost bind 或 lambda 仿函数
【发布时间】:2014-10-28 15:02:07
【问题描述】:

我可以使用 boost::bind 或 boost lambda 库来创建一个忽略其参数并始终返回一个常量的函子吗?

例如具有与以下行为等效的函子:

int returnThree( SomeType arg ) { return 3; }

【问题讨论】:

    标签: c++ boost boost-bind boost-lambda


    【解决方案1】:

    当然,使用

    boost::phoenix::val(3);
    

    Live On Coliru

    #include <boost/phoenix.hpp>
    
    namespace p = boost::phoenix;
    using namespace p::arg_names;
    
    int main()
    {
        auto p = p::val(42);
        return p() + p(/*ignored:*/77);
    }
    

    返回 84 作为退出代码。

    【讨论】:

    • 甚至给你最多 10 个参数,而 boost::lambda::constant 限制你到 3 个。
    【解决方案2】:

    来自 Barry 对 sehe 回答的评论:

    #include "boost/lambda/lambda.hpp"
    
    ...
    
    auto returnThree = boost::lambda::constant(3);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多