Lambdas and Callables
Capture By Value
Capture by value gives a lambda its own copy of a variable.
Capture By Value
capture_by_value.cpp
#include <iostream>
int main() {
int base = ;
auto addBase = [base](int amount) {
return base + amount;
};
base = 100;
int result = addBase(5);
std::cout << "capturedResult=" << result << std::endl;
std::cout << "currentBase=" << base << std::endl;
return 0;
}
#include <iostream>
int main() {
int base = ;
auto addBase = [base](int amount) {
return base + amount;
};
base = 100;
int result = addBase(5);
std::cout << "capturedResult=" << result << std::endl;
std::cout << "currentBase=" << base << std::endl;
return 0;
}
#include <iostream>
int main() {
int base = ;
auto addBase = [base](int amount) {
return base + amount;
};
base = 100;
int result = addBase(5);
std::cout << "capturedResult=" << result << std::endl;
std::cout << "currentBase=" << base << std::endl;
return 0;
}
value capture
When a lambda captures by value, later changes to the original variable do not change the captured copy.