g++ 12 -std=gnu++20

Brian Inglis Brian.Inglis@SystematicSW.ab.ca
Thu Oct 31 05:40:41 GMT 2024


On 2024-10-30 10:30, Dimitry Andric via Cygwin wrote:
> On 30 Oct 2024, at 17:14, Csaba Ráduly via Cygwin wrote:
>> On 30/10/2024 17:00, Dimitry Andric via Cygwin wrote:
>>> #include<string>
>>> #include<cassert>
>>>
>>> constexpr bool foo()
>>> {
>>>    std::string str2{"abcwe"};
>>>    return str2.size()==5;
>>> }
>>>
>>> static_assert(foo());
>>>
>>> int main()
>>> {
>>>    assert(foo());
>>> }
>>
>> Seems like _GLIBCXX_USE_CXX11_ABI is not defined by default.
> 
> Indeed, /usr/lib/gcc/x86_64-pc-cygwin/12/include/c++/x86_64-pc-cygwin/bits/c++config.h shows:
> 
>     317  # define _GLIBCXX_USE_DUAL_ABI 1
>     318
>     319  #if ! _GLIBCXX_USE_DUAL_ABI
>     320  // Ignore any pre-defined value of _GLIBCXX_USE_CXX11_ABI
>     321  # undef _GLIBCXX_USE_CXX11_ABI
>     322  #endif
>     323
>     324  #ifndef _GLIBCXX_USE_CXX11_ABI
>     325  # define _GLIBCXX_USE_CXX11_ABI 0
>     326  #endif
>   
> Also, g++ -v shows --with-default-libstdcxx-abi=gcc4-compatible, so I guess this was deliberate on the part of the packagers. Probably for backwards compatibility reasons?

Okay, sorry, I typoed an extra _ before _GLIBCXX_NOEXCEPT!

Cygwin gcc/g++ 13.3 is available as a test package; only with .4/.5 are gcc 
version features and fixes considered stable.

The build is requesting -std=gnu++20, so why is 11 ABI relevant?

As I want to use the latest language, why is gcc 4 compatible ABI *default* 
relevant?

What can I do in the package build to get g++ to not use the default but 
whatever is required to support the latest language?

Where can I find docs on these symbols and their meanings, uses, and settings?

-- 
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


More information about the Cygwin mailing list