std::bind 调用 std::make_shared
我正在尝试创建一个通过在 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);
I'm trying to create a functor that returns a shared_ptr by calling std::bind on std::make_shared, but the syntax is beyond me, or perhaps it's not even possible? Something like the following, assuming the constructor of MyBar takes a const reference to a MyFoo:
std::function<std::shared_ptr<MyBar>(const MyFoo &)> functor = std::bind(&std::make_shared<MyBar>, std::placeholders::_1);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你就快到了;您只需要为
make_shared
指定附加参数来指示它接受的参数类型。这些通常是推导出来的,但如果您没有在绑定表达式中指定它们,那么它会尝试默认构造MyBar
对象。You're nearly there; you just need to specify the additional arguments to
make_shared
to indicate the type of parameter it accepts. These are normally deduced, but if you don't specify them in a bind expression then it tries to default-construct theMyBar
object.