【问题标题】:std::bind a call to std::make_sharedstd::bind 调用 std::make_shared
【发布时间】:2011-03-08 20:43:54
【问题描述】:

我正在尝试通过在 std::make_shared 上调用 std::bind 来创建一个返回 shared_ptr 的函子,但语法超出了我的范围,或者甚至不可能?如下所示,假设 MyBar 的构造函数采用对 MyFoo 的 const 引用:

std::function<std::shared_ptr<MyBar>(const MyFoo &)> functor = std::bind(&std::make_shared<MyBar>, std::placeholders::_1);

【问题讨论】:

    标签: c++11 bind make-shared


    【解决方案1】:

    你快到了;您只需要指定make_shared 的附加参数来指示它接受的参数类型。这些通常是推导出来的,但如果您没有在绑定表达式中指定它们,那么它会尝试默认构造 MyBar 对象。

    std::function<std::shared_ptr<MyBar>(const MyFoo &)> functor = 
        std::bind(&std::make_shared<MyBar,MyFoo const&>, std::placeholders::_1);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-12
      • 2014-08-10
      • 1970-01-01
      • 1970-01-01
      • 2021-06-05
      • 2014-12-17
      • 2014-03-25
      • 2023-03-16
      相关资源
      最近更新 更多