在lambda中移动捕获

在lambda中移动捕获

如何通过C ++ 11 lambda中的move(也称为右值引用)捕获?

我想写这样的东西:

std::unique_ptr<int> myPointer(new int);std::function<void(void)> example = [std::move(myPointer)]{
   *myPointer = 4;};


Smart猫小萌
浏览 720回答 3
3回答

侃侃尔雅

您还可以使用std::bind捕获unique_ptr:std::function<void()>&nbsp;f&nbsp;=&nbsp;std::bind( &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[]&nbsp;(std::unique_ptr<int>&&nbsp;p)&nbsp;{&nbsp;*p=4;&nbsp;}, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::move(myPointer) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);
打开App,查看更多内容
随时随地看视频慕课网APP