Thanks - I hadn't understood capturing variable properly but this has helped a lot.
Does this mean that the Lambda function above is equavalent to this (in a very basic sense):
int i = 0;
void myFunc(int& var) {
Serial.println(var);
};
i = 42;
myFunc(i); // prints "42"
i.e. it will always access the current value stored in i, and doesn't need to have a reference to i explicitly passed to it when called?