我对如何调用已移到shared_ptr中的std :: function感到困惑……
#include <iostream>
#include <functional>
using func_type = std::function<int()>;
int main(int, char*[])
{
func_type func = [] () { return 42; };
std::cout << func() << "\n"; // -> 42
auto sp_func = std::make_shared<func_type>(std::move(func));
// how do we now call the function?
}
对于任何朝着正确方向的(智能)指针表示感谢。
答案 0 :(得分:2)
好吧,您刚刚创建了一个指向您函数的(智能)指针。 访问对象所需要做的就是取消引用该指针,然后返回函数。
在这种情况下,您应该只使用(*sp_func)()
。
注释:
func()
。这是未定义的行为。您真的不知道移动的对象的状态。