On 2017/2/21 3:33, Marvin Gülker wrote:
> the following program should switch to the current locale and then print
> the name of that locale:
> [...]
> It appears, however, that it doesn't do that on my 32-bits Windows 7.
> The program compiles fine, but when I execute it, I get this (after
> the usual "application has requested the runtime yadda yadda"):
>
>     terminate called after throwing an instance of 'std::runtime_error'
>       what(): locale::facet::_S_create_c_locale name not valid
>
> (That is, an std::runtime_error exception is thrown by the constructor
> of std::locale)
I compiled and ran the program and it didn't generate any exceptions on 
my 64-bit Windows 7:

     E:\Desktop>cmd
     Microsoft Windows [版本 6.1.7601]
     版权所有 (c) 2009 Microsoft Corporation。保留所有权利。

     E:\Desktop>g++ test.cc -std=c++14 -Wall -Wextra -pedantic

     E:\Desktop>a.exe
     Locale is now: C

     E:\Desktop>g++ --version
     g++ (gcc-6-branch HEAD with MCF thread model, built by LH_Mouse.) 
6.3.1 20170218
     Copyright (C) 2016 Free Software Foundation, Inc.
     This is free software; see the source for copying conditions. 
There is NO
     warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR 
PURPOSE.

> I used the locale name "" (empty string), which should refer to the
> environment's locale and should be available on any platform (I even
> think it is required to do that, but I don't have a C++ standard at
> hand). Using the "C" locale works, but any other value causes the above
> problem.
You are right. See [locale.cons]/6:

     explicit locale(const char* std_name);
     6 Remarks: The set of valid string argument values is "C", "", and
       any implementation-defined values.

> Can someone please clarify what exactly is the problem with the C++
> variant of this program, and how one can get it to work on Windows?
>
>     $ g++ --version
>     g++.exe (Rev1, Built by MSYS2 project) 6.3.0
>     Copyright (C) 2016 Free Software Foundation, Inc.
>     This is free software; see the source for copying conditions.  There is NO
>     warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR 
> PURPOSE.
>
I can't reproduce this problem. It seems that your environment is 
broken. I have CC'd this message to the MSYS2 mailing list. Hope it helps.

-- 
Best regards,
LH_Mouse


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
Msys2-users mailing list
Msys2-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/msys2-users

Reply via email to