https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108054
--- Comment #2 from joseph at codesourcery dot com <joseph at codesourcery dot com> --- The basic principle is that auto declarations should always be writable in a form without auto, so they should never result in a type escaping to a larger scope (but a rule expressed in that form would be very complicated to check, as discussed in the context of earlier drafts of the auto proposal with a rule expressed in such terms, hence the current version). Thus examples like these, where the type declared in a statement expression does escape via the type of that expression, are entirely appropriately rejected. For cases of non-ordinary identifiers declared in code using only standard constructs (not all of which are properly detected by GCC at present), and related issues for some cases other than auto, I provided BSI with a document c2x-declaration-context.pdf to include when submitting the NB comments I provided on the C2X CD to ISO, which gives 16 examples of code using such corner cases and discusses what general principles might be consistent with the interpretations previously applied by WG14 in some of those cases. So hopefully that will be included with the CD ballot results, if BSI includes that document as requested.