Lambdas and Callables
Capture By Reference
Capture by reference lets a lambda update a variable outside the lambda body.
Capture By Reference
capture_by_reference.cpp
#include <iostream>
int main() {
int increment = ;
int total = 0;
auto addToTotal = [&total](int value) {
total += value;
};
addToTotal(increment);
addToTotal(2);
std::cout << "increment=" << increment << std::endl;
std::cout << "total=" << total << std::endl;
return 0;
}
#include <iostream>
int main() {
int increment = ;
int total = 0;
auto addToTotal = [&total](int value) {
total += value;
};
addToTotal(increment);
addToTotal(2);
std::cout << "increment=" << increment << std::endl;
std::cout << "total=" << total << std::endl;
return 0;
}
#include <iostream>
int main() {
int increment = ;
int total = 0;
auto addToTotal = [&total](int value) {
total += value;
};
addToTotal(increment);
addToTotal(2);
std::cout << "increment=" << increment << std::endl;
std::cout << "total=" << total << std::endl;
return 0;
}
reference capture
When a lambda captures by reference, it works with the original variable.