Solaris definition of struct std::lconv

Rainer Orth ro@CeBiTec.Uni-Bielefeld.DE
Wed Jul 31 12:25:27 GMT 2024


Hi Jonathan,

>> This block is not enabled for C++, but it should be, because C++17
>> incorporates the C99 standard library. So the C99 members of lconv
>> should be present in C++17 too.
>>
>> Do you know if this is a known issue?
>>
>> I can work around it by defining _LCONV_C99 in the relevant .cc files,
>> but it shouldn't be needed.
>
> That works, but I already have:
> #define _POSIX_C_SOURCE 200809L
> which I would have expected to be enough to enable the block above.
> POSIX.1-2008 is based on C99, so those members should be defined.
>
> I guess the "namespace and binary compatibility" concerns override the
> conformance requirements here?

I don't know: either nobody thought about C++11 at the time, or that's
just one of the areas not seeing much love due to Oracle's lay-offs ;-(

> Since these members only need to be acessed from inside libstdc++.so,
> not in headers, defining _LCONV_C99 is fine.

Fine, that's certainly the short-term route.

> This seems to be the only build failure I get with the new clocale
> model on Solaris 11.4, so I'll start testing it.

Perfect, thanks for doing this.

	Rainer

-- 
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University


More information about the Libstdc++ mailing list