title: What is a generalized lambda capture and why was it created?
body: <p>I see a lot of questions in which generalized lambda captures are used for various things, but nothing that explains exactly what they are or why they were added to the standard.</p>
  
  <p>I've read what appears to be the <a href="https://isocpp.org/files/papers/N3648.html" rel="nofollow noreferrer">document describing the updated to the standard necessary for generalized lambda captures to exist</a>, but it doesn't really say why they were created, nor does it really give a good summary of exactly how they work. It's mostly just a bunch of dry 'strike this out here and add this language here' stuff.</p>
  
  <p>So, what are they? Why would I want to use one? What rules do they follow? For example, it seems to allow capture expressions. When are these expressions evaluated? If they result in side effects, when do those take effect? If several expressions are evaluated, is there a guaranteed evaluation order?</p>