http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47007
--- Comment #19 from Tobias Burnus <burnus at gcc dot gnu.org> --- Seemingly, g++ prefers to unset the locale. Namely, libstdc++-v3/config/locale/generic/c_locale.cc has: // Assumes __s formatted for "C" locale. char* __old = setlocale(LC_ALL, 0); const size_t __len = strlen(__old) + 1; char* __sav = new char[__len]; memcpy(__sav, __old, __len); setlocale(LC_ALL, "C"); ... setlocale(LC_ALL, __sav); delete [] __sav;