delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2016/10/01/10:58:42

X-Recipient: archive-cygwin AT delorie DOT com
DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id
:list-unsubscribe:list-subscribe:list-archive:list-post
:list-help:sender:reply-to:subject:references:to:from:message-id
:date:mime-version:in-reply-to:content-type
:content-transfer-encoding; q=dns; s=default; b=ryyZeP7NRG37dmKh
k9lMb8j7qgy+82Rdt38bePOmKhvEupUGOg1LtHAUOGhZJ8BMhg38Tho1ahcm6XsC
ZJfuO9uPAfj95Tc04rcrfCyM4GzXQoaYJ3onjYxMav3joB74eQaMKXrfBPVa0Hle
ed8NVRyd/Chn4Nmv+OdGEEFWr9k=
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id
:list-unsubscribe:list-subscribe:list-archive:list-post
:list-help:sender:reply-to:subject:references:to:from:message-id
:date:mime-version:in-reply-to:content-type
:content-transfer-encoding; s=default; bh=HDniYGCWRsTsHX4Uu08peA
yROPA=; b=ul1vxHQXUQTtwhV63J0VHZs0NHuzFCGDH0n7oZFXYjLh6TqZjbHLSZ
UCbZdgHJ46se4hTh800rzTsD87eDEZNX2UWf53chw3CkdjYKAsItSuNXRyJCIn/e
kmX8YXLki5dOChq3pAtYqlc+pnxipuAh41sDaPwg+A/LNSalVqVtc=
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
Authentication-Results: sourceware.org; auth=none
X-Virus-Found: No
X-Spam-SWARE-Status: No, score=0.4 required=5.0 tests=AWL,BAYES_40,KAM_LAZY_DOMAIN_SECURITY,RCVD_IN_DNSWL_LOW autolearn=no version=3.3.2 spammy=calgary, Calgary, inglis, Inglis
X-HELO: smtp-out-no.shaw.ca
X-Authority-Analysis: v=2.2 cv=Qb8khYTv c=1 sm=1 tr=0 a=WqCeCkldcEjBO3QZneQsCg==:117 a=WqCeCkldcEjBO3QZneQsCg==:17 a=IkcTkHD0fZMA:10 a=FP58Ms26AAAA:8 a=mV9VRH-2AAAA:8 a=yS8ZTNyj3a3Raj9aliMA:9 a=QEXdDO2ut3YA:10 a=bKJ81ofCEp0A:10 a=t9tyYGze7rQA:10 a=6LVbBl2NLSWPyIBDCKCu:22 a=BYZmueQyWBbq8FANvIHb:22
Reply-To: Brian DOT Inglis AT SystematicSw DOT ab DOT ca
Subject: Re: c++0x and locale_t
References: <af127659-63ef-96ba-60f9-3bf17f70e6c1 AT cornell DOT edu>
To: cygwin AT cygwin DOT com
From: Brian Inglis <Brian DOT Inglis AT SystematicSw DOT ab DOT ca>
Message-ID: <d62d5b0c-3702-62f5-f1c9-d470404fae94@SystematicSw.ab.ca>
Date: Sat, 1 Oct 2016 08:58:09 -0600
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.3.0
MIME-Version: 1.0
In-Reply-To: <af127659-63ef-96ba-60f9-3bf17f70e6c1@cornell.edu>
X-CMAE-Envelope: MS4wfPcLReShlLZB5UFQrLEN4B7QJMHyQZiGVKZ9JKDjvWRtP2TL4e2f7ijUf5rbN0B86F2/h7rxayP8+b7oz0sOm5nFnfATbm0uF94ztlETYKgaw9cnCjct tj5CjHmMhuZYiWmxmMi2P7sCtqeXUIyJFyf6bE7FwQWiop0Lyv+IpZcwxQ5XfimcMLt06lYNyFBxOg==
X-IsSubscribed: yes

On 2016-10-01 07:30, Ken Brown wrote:
> I'm having an issue building icu, which boils down to the following
> test case:
> $ cat foo.cc
> #include <locale.h>
> locale_t foo;
> $ g++ -c --std=c++0x foo.cc
> foo.cc:2:1: error: ‘locale_t’ does not name a type
>  locale_t foo;
>  ^
> If I remove '--std=c++0x', the error goes away.  I know nothing about
> C++ standards, so I don't know if this is expected behavior or if it
> indicates a bug in Cygwin's headers.

For C POSIX locale_t support, you have to do one or both of:

#define _XOPEN_SOURCE   700
#define _POSIX_C_SOURCE 200809L

to support multiple dynamic C locales and related functions.
This may be done automatically if you use the default -std=gnu++03, which may
have been the intent in ICU and original interpretation by g++.
g++ now interprets (and deprecates) c++0x to mean c++11.
You could try changing it to explicitly c++03 and see if it works, without the
GNU extensions.
Otherwise you should change it to explicitly gnu++03, as c++0x is deprecated,
and may be dropped; g++ also deprecates c++1y aka c++14 and c++1z which may be
c++17, and their gnu++ counterparts.

I don't understand why ICU C++ would use C locales, when C is now trying to add
a subset of features C++ has supported better, more flexibly in <locale> for
over a decade; see:

https://sourceforge.net/p/msys2/discussion/general/thread/23e1b5ce/

for a similar problem to yours, and the solution in standard C++; and:

http://stdcxx.apache.org/doc/stdlibug/24-3.html

for an explanation of the differences between C++ and C locales.

OTOH ICU comes from IBM, and may be more interested in consistency across
languages: how else can you explain C++ methods called createInstance?

But you may just be the packager, porter, and builder, so may be unable to fix
the implementation.

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

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

- Raw text -


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