我創造了我的λ像這樣:「刷新」拉姆達對象
int i = 0;
auto gen_lam = [=]() mutable -> int {return ++i;};
,有效計算的時候,它被稱爲數字,因爲它存儲所拍攝的i
。有沒有辦法「重建」對象,使其初始值爲i
?
線沿線的東西:
decltype(gen_lam) gen_lam2;
,使得下面的代碼輸出1 1
代替1 2
std::cout << gen_lam() << std::endl;
decltype(gen_lam) gen_lam2;
std::cout << gen_lam2() << std::endl;
爲了簡單和完整,我會爲此創建一個普通的舊仿函數類。 – 2014-09-23 13:43:34
我想將它存儲在'std :: function'中,並且不想在我的類的調用者/用戶上強加另一種類型 – TeaOverflow 2014-09-23 13:50:50
@TeaOverflow:只要類型擦除的額外開銷是可接受的... – Deduplicator 2014-09-23 13:51:52