C++ 11闭包shared_ptr

Jos*_*osé 8 c++ lambda c++11

通过shared_ptr创建堆分配闭包管理的语法是什么.我想将闭包传递给函数并能够传递nullptr.看起来像使用a shared_ptr< ::std::function<void()>但我无法通过语法来初始化lambda expresion

For*_*veR 5

应该是这样的

auto lambda = []() { /* do something usefull */ };
auto p = std::make_shared<std::function<void()>>(lambda);
Run Code Online (Sandbox Code Playgroud)

但实际上你可能没有必要shared_ptr,因为功能可以从构造nullptr.

std::function<void()> fnc(nullptr);
Run Code Online (Sandbox Code Playgroud)