https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85515
--- Comment #3 from David Malcolm <dmalcolm at gcc dot gnu.org> --- Some examples of using the leaky abstractions, adapted from the video: int main () { auto lambda = [val = 2](){ return val; }; //lambda.__val = 4; return lambda(); } On uncommenting the assignment, GCC generates a return of 4, rather than 2. int test () { int arr[] = {1, 2, 3, 4, 5}; int sum = 0; for (const auto v: arr) { sum += v; //__for_begin = __for_end; } return sum; } On uncommenting the assignment, GCC generates an infinite loop.