4
int i = 9;
struct_variable.f = [i](T struct_variable&) {
do_something_with_capture_variable(i);
...
struct_variable.f = another_compatible_std_function;
//do something else, but never use captured variable after here
...
};
struct_variable.f(struct_variable);
lambda函數被保存爲構件struct_variable.f
(這也是鍵入std::function
),和在回調,struct_variable.f
由another_compatible_std_function
結束之後使用所拍攝的變量取代。分配新值到std ::功能而調用
這種做法是否保證安全?
只要您小心,我想說是,因爲這種情況類似於在執行某個成員函數時刪除一個對象。但這很難從標準中證明。 – aschepler