std::bind调用std::make_shared

3

我想创建一个函数对象,通过在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);
1个回答

7

您已经接近成功了;您只需指定make_shared的附加参数以指示其接受的参数类型。这些通常是推断出来的,但如果您在绑定表达式中未指定它们,则尝试默认构造MyBar对象。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接