delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2023/09/21/14:09:06

X-Recipient: archive-cygwin AT delorie DOT com
DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 9850B3857B8E
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cygwin.com;
s=default; t=1695319745;
bh=UoCovRWR8d27ECsgc3dhW0knlnDG2EtiAXPzak/7A44=;
h=Date:Subject:To:References:In-Reply-To:List-Id:List-Unsubscribe:
List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:
From;
b=WsucV0AEUNgNikyfGxMSF5rHstLy4n7vezx6LrgtcIZlTzrdOgcgP2galEn4occZ2
jdcz81MfoW6pU6pPLHBNIiDCnRJAjNqh0NnNNBpX8jZtA2rWEsdILYG4Dxv3FzZ87V
FguazuMfxE9Iw0CkvI0YekY9ZpNfS9Spo0XRvycE=
X-Original-To: cygwin AT cygwin DOT com
Delivered-To: cygwin AT cygwin DOT com
DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 279903858D39
X-Authority-Analysis: v=2.4 cv=VbHkgXl9 c=1 sm=1 tr=0 ts=650c869b
a=DxHlV3/gbUaP7LOF0QAmaA==:117 a=DxHlV3/gbUaP7LOF0QAmaA==:17
a=IkcTkHD0fZMA:10 a=2QSLavsyAAAA:8 a=Wf3yj7-f2ezLNNxvlq4A:9 a=QEXdDO2ut3YA:10
a=9H_80fVQ3bbXSWzY4Kdq:22
Message-ID: <0fab8831-c206-14fe-4350-3092e62fca98@Shaw.ca>
Date: Thu, 21 Sep 2023 12:08:26 -0600
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101
Thunderbird/102.15.1
Subject: Re: std::runtime_error on std::locale("")
To: cygwin AT cygwin DOT com
References: <20230922011204 DOT bb166498090e6cbe163349f3 AT nifty DOT ne DOT jp>
<20230922012856 DOT 47872090281f2a303fd7b99f AT nifty DOT ne DOT jp>
Organization: Inglis
In-Reply-To: <20230922012856.47872090281f2a303fd7b99f@nifty.ne.jp>
X-CMAE-Envelope: MS4xfD3Xwir7yEWWYiu+/q0x/ojz8S/+ZFCGFgFIk+vjRc/u1p6Utg9psKDS3SkI0xYF3dae/CwW2gC4IQjfEk0ew0BOGoO6MQCa6OwqrbNrUEgdcUGTB1sJ
04EW6chqBPKPNd10ICOUJdCc40Ks2tPHNxedIaKe2ZYCz9a4kB/Qqs8KkLduoAoprQHxEzSYM/pp3g==
X-Spam-Status: No, score=-4.1 required=5.0 tests=BAYES_00, DKIM_SIGNED,
DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, NICE_REPLY_A, RCVD_IN_DNSWL_LOW,
SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on
server2.sourceware.org
X-BeenThere: cygwin AT cygwin DOT com
X-Mailman-Version: 2.1.30
List-Id: General Cygwin discussions and problem reports <cygwin.cygwin.com>
List-Unsubscribe: <https://cygwin.com/mailman/options/cygwin>,
<mailto:cygwin-request AT cygwin DOT com?subject=unsubscribe>
List-Archive: <https://cygwin.com/pipermail/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-request AT cygwin DOT com?subject=help>
List-Subscribe: <https://cygwin.com/mailman/listinfo/cygwin>,
<mailto:cygwin-request AT cygwin DOT com?subject=subscribe>
From: Brian Inglis via Cygwin <cygwin AT cygwin DOT com>
Reply-To: cygwin AT cygwin DOT com
Cc: Brian Inglis <Brian DOT Inglis AT Shaw DOT ca>
Errors-To: cygwin-bounces+archive-cygwin=delorie DOT com AT cygwin DOT com
Sender: "Cygwin" <cygwin-bounces+archive-cygwin=delorie DOT com AT cygwin DOT com>
X-MIME-Autoconverted: from base64 to 8bit by delorie.com id 38LI9639028535

On 2023-09-21 10:28, Takashi Yano via Cygwin wrote:
> On Fri, 22 Sep 2023 01:12:04 +0900
> Takashi Yano wrote:
>> I wonder why the following code throws std::runtime_error
>> even though the LC_ALL is set to valid locale other than "C".
>> This does not occur only when LC_ALL is set to "C".
>>
>> #include <locale>
>> int main()
>> {
>> 	std::locale("");
>> 	return 0;
>> }
>>
>> In linux, this occurs only when the LC_ALL is set to invalid
>> locale (i.e. locale that is not registered in system).
> 
> Similarly,
> std::locale("ja_JP.UTF-8")
> throws std::runtime_error in cygwin.

Looks like the implementation does not like any default "" or explicit 
"en_US.UTF-8" strings there! See example at link and below; results are always 
the same:

	https://en.cppreference.com/w/cpp/locale/locale

#include <iostream>
#include <locale>

int main()
{
     std::wcout << "User-preferred locale setting is "
	       << std::locale().name().c_str() << '\n';

     // on startup, the global locale is the "C" locale
     std::wcout << 1000.01 << '\n';
	
     // replace the C++ global locale and the "C" locale with the user-preferred 
locale
     std::locale::global(std::locale(""));
     // use the new global locale for future wide character output
     std::wcout.imbue(std::locale());

     // output the same number again
     std::wcout << 1000.01 << '\n';
}

$ g++ -o c++locale{,.cc}
$ ./c++locale
User-preferred locale setting is C
1000.01
terminate called after throwing an instance of 'std::runtime_error'
   what():  locale::facet::_S_create_c_locale name not valid
Aborted (core dumped)

-- 
Take care. Thanks, Brian Inglis              Calgary, Alberta, Canada

La perfection est atteinte                   Perfection is achieved
non pas lorsqu'il n'y a plus rien à ajouter  not when there is no more to add
mais lorsqu'il n'y a plus rien à retirer     but when there is no more to cut
                                 -- Antoine de Saint-Exupéry

-- 
Problem reports:      https://cygwin.com/problems.html
FAQ:                  https://cygwin.com/faq/
Documentation:        https://cygwin.com/docs.html
Unsubscribe info:     https://cygwin.com/ml/#unsubscribe-simple

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019