https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102350
--- Comment #10 from Peter Dimov <pdimov at gmail dot com> --- (In reply to Jakub Jelinek from comment #9) > That would be an aliasing violation. > The artificial vars created by __builtin_source_location have the > std::source_location::__impl type, so accessing those using some other > dynamic type is invalid. In that case, the only valid way to use the result of __builtin_source_location would just be std::source_location itself. :-/ I wonder whether there's a conformance problem in making it available. It's true that the identifier `source_location` isn't reserved, but only programs that include `<source_location>` can tell the difference, and these programs (assuming they existed and worked) will probably be broken anyway because now they'll be including the standard header instead of their own.