【发布时间】:2016-06-15 21:36:39
【问题描述】:
对于 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); };
///...
我知道移入 lambda 的变通方法(但不幸的是,这种变通方法需要一个默认的可构造对象,在我的情况下,该对象通常是没有默认构造函数的 lambda 表达式)
【问题讨论】:
-
不清楚,你是说
f不可复制吗? -
是的,f 不可复制构造,因为它捕获了唯一的对象