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