tgo*_*art 3 bind make-shared c++11
我正在尝试通过在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);
Run Code Online (Sandbox Code Playgroud)
你快到了; 你只需要指定附加参数make_shared来指示它接受的参数类型.这些通常是推导出来的,但是如果你没有在绑定表达式中指定它们,那么它会尝试默认构造MyBar对象.
std::function<std::shared_ptr<MyBar>(const MyFoo &)> functor =
std::bind(&std::make_shared<MyBar,MyFoo const&>, std::placeholders::_1);
Run Code Online (Sandbox Code Playgroud)