gpt4 book ai didi

c++11 - std::bind 调用 std::make_shared

转载 作者:行者123 更新时间:2023-12-02 23:40:21 25 4
gpt4 key购买 nike

我正在尝试创建一个通过在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com