是否可以通過在一個lambda中捕獲它並延長lambda的壽命來延長unique_ptr
的壽命?通過延長捕獲的壽命來保留指針
我試過了,但得到了a=move(a)
表達式的語法錯誤。
#include <cstdio>
#include <functional>
#include <memory>
#include <iostream>
using namespace std;
struct A {
A() { cout << "A()" << endl; }
~A() { cout << "~A()" << endl; }
};
int main() {
std::function<void()> f;
{
std::unique_ptr<A> a(new A());
f = [a=move(a)]() mutable { return; };
}
return 0;
}
你可以在lambda中捕獲對象,除非它們可複製,因爲lambda是可複製的,構造函數被刪除了unique_ptr,編譯器也刪除了你的lambda – Swift