https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115722
--- Comment #10 from Jason Liam <jlame646 at gmail dot com> --- (In reply to Andrew Pinski from comment #7) > The question is does the lambda type in a default argument gets defined once > even if it is evaluated twice. I think so based on > expr.prim.lambda.closure/2 . I don't think expr.prim.lambda.closure/2 explains this because it only says that the closure-type is declared in the smallest..... It only means that in our example the closure-type will be declared in the global scope. That's it. It doesn't prohibit the creation of new unique closure-types in any way or context.