如何通过C++ 11 lambda中的move(也称为右值引用)捕获?
我想写这样的东西:
std::unique_ptr<int> myPointer(new int);
std::function<void(void)> example = [std::move(myPointer)]{
*myPointer = 4;
};
Run Code Online (Sandbox Code Playgroud) 对于C++ 11中的Packaged_Task实现,我希望实现我在下面的C++ 14代码中所表达的内容.换句话说,我想转发一个lambda表达式.
template<class F>
Packaged_Task(F&& f) {
Promise<R> p;
_future = p.get_future();
auto f_holder = [f = std::forward<F>(f)]() mutable { return std::move(f); };
///...
Run Code Online (Sandbox Code Playgroud)
我知道移植到lambda的变通方法(但不幸的是这个变通方法需要一个默认的可构造对象,在我的例子中,对象通常是没有default-constructor的lambda表达式)