我正在尝试创建一个通过在 std::make_shared 上调用 std::bind 来返回共享指针的仿函数,但语法超出了我的范围,或者也许根本不可能?类似于下面的内容,假设 MyBar 的构造函数采用对 MyFoo 的 const 引用:
std::function<std::shared_ptr<MyBar>(const MyFoo &)> functor = std::bind(&std::make_shared<MyBar>, std::placeholders::_1);
最佳答案
你就快到了;您只需要为 make_shared
指定附加参数来指示它接受的参数类型。这些通常是推导出来的,但如果您没有在绑定(bind)表达式中指定它们,那么它会尝试默认构造 MyBar
对象。
std::function<std::shared_ptr<MyBar>(const MyFoo &)> functor =
std::bind(&std::make_shared<MyBar,MyFoo const&>, std::placeholders::_1);
关于c++11 - std::bind 调用 std::make_shared,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5238106/