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("") Content-Language: en-CA 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 Precedence: list List-Id: General Cygwin discussions and problem reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Brian Inglis via Cygwin Reply-To: cygwin AT cygwin DOT com Cc: Brian Inglis Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: cygwin-bounces+archive-cygwin=delorie DOT com AT cygwin DOT com Sender: "Cygwin" Content-Transfer-Encoding: 8bit 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 >> 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 #include 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