Square brackets indicate which variables are “captured” by the lambda, and how (by value or by reference).
Capture means you can reference a variable outside of lambda from inside lambda. When capturing by value, you get the value of the variable during the creation of the lambda - similar to passing a parameter to a function by value. If the capture is by reference, you will have a reference to the actual variable outside of the lambda (and you need to make sure that it stays in the scope).
, "this", , .