无法通过移入`std :: function`参数来传递lambda函数参数

时间:2019-02-27 15:05:43

标签: c++ lambda c++14 c++17 move

#include <functional>
#include <memory>

void f (std::function<void()>) {};

int main()
{
    auto x = std::make_unique<int>(3);
    f ( [x = std::move(x)] () {} );
}

Wandbox

无法同时在gcc和Clang中进行编译,抱怨尝试调用已生成的lambda类型的已删除副本构造函数。从某种意义上讲,无法复制捕获的std::unique_ptr,这是有道理的,但是我只希望可以调用lambda的move构造函数。

我应该怎么做才能正确地传递函数参数?

0 个答案:

没有答案