https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70493
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution|--- |WONTFIX --- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> --- Libstdc++ has no idea why the locale name was invalid. When you use the empty string "" it constructs a locale name from the environment and then calls newlocale from the C library. newlocale returns (locale_t)0 and sets ENOENT, which according to POSIX means "For any of the categories in category_mask, the locale data is not available" (or for the GNU C library, "locale is not a string pointer referring to a valid locale"). Unless libstdc++ is going to iteratively try creating a locale from each of the LC_* environment variables to see which one failed, it can't really give you any better information. That doesn't seem worth the effort (and increase in code size), sorry.