ตัวอย่างสั้น ๆ :
#include <iostream>
int main()
{
int n;
[&](){n = 10;}(); // OK
[=]() mutable {n = 20;}(); // OK
// [=](){n = 10;}(); // Error: a by-value capture cannot be modified in a non-mutable lambda
std::cout << n << "\n"; // "10"
}
คำถาม: ทำไมเราต้องการmutable
คำหลัก มันค่อนข้างแตกต่างจากการส่งพารามิเตอร์แบบดั้งเดิมไปยังฟังก์ชั่นที่ตั้งชื่อ เหตุผลเบื้องหลังคืออะไร
ฉันรู้สึกว่าจุดจับภาพโดยรวมคือการอนุญาตให้ผู้ใช้เปลี่ยนชั่วคราว - ไม่เช่นนั้นฉันเกือบจะดีกว่าเสมอในการใช้การจับภาพอ้างอิงโดยอ้างอิงใช่ไหม?
ตรัสรู้ใด ๆ
(ฉันใช้ MSVC2010 โดยวิธี AFAIK นี้ควรเป็นมาตรฐาน)
const
ค่าเริ่มต้น
const
ค่าเริ่มต้นในที่สุด!