可以從移動捕獲Lambda 表達式構造std::function;
模板建構子
可以使用以下模板建構子從移動捕獲lambda 構造std::function:template<class F> function(F f);
要求
對於這個構造函數要工作,必須滿足以下要求:
lambda 表達式的捕獲必須是可複製構造的。
lambda 表達式必須是可呼叫的,具有指定的參數類型和傳回類型。 lambda 捕獲的複制構造函數和析構函數不得拋出異常auto pi = std::make_unique<int>(0); // Move-capturing lambda auto foo = [q = std::move(pi)] { *q = 5; std::cout << *q << std::endl; };
std::function<void()> bar = foo; std::function<void()> bar{foo}; std::function<void()> bar{std::move(foo)}; std::function<void()> bar = std::move(foo); std::function<void()> bar{std::forward<std::function<void()>>(foo)}; std::function<void()> bar = std::forward<std::function<void()>>(foo);
以上是我可以從移動捕獲 Lambda 表達式建立'std::function”嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!