[Development] Houston, qint128 has a problem
Thiago Macieira
thiago.macieira at intel.com
Sat Dec 9 17:14:19 CET 2023
On Friday, 8 December 2023 18:51:19 PST Marc Mutz via Development wrote:
> After spending countless hours between Ivan and myself fighting GCC's
> mysteriously-vanishing <type_traits> support for __int128_t (= qint128),
> it turns out that with -ansi/-std=c++NN, not even the most basic of
> <type_traits> work: std::is_signed_v<qint128> is _false_! I repeat: _FALSE_.
The issue here is that GCC devs' reading of the standard, as worded, was that
they weren't allowed to make an extended integer type return true for those
traits because they weren't in the list of types that the standard said it
should. Specifically, the question was whether std::is_integral is true.
I thought C++23 had clarified that they can, indeed, be integral. But I can't
find the change and I can't reproduce it. In fact, it the code seems to still
be there, so I must be mis-remembering the conclusion. libstdc++ reacts to the
compiler defining __GLIBCXX_TYPE_INT_N_0 to say this is a supported type That
macro is defined in c-cppbuiltin.cc[1], which has a !flag_iso check.
It's a little difficult to do more investigation right now because Qt Creator
keeps crashing as soon as I open type_traits[2]. There's something wrong with
the build I made yesterday.
[1] https://codebrowser.dev/gcc/gcc/c-family/c-cppbuiltin.cc.html#1224
[2] https://bugreports.qt.io/browse/QTCREATORBUG-30044
--
Thiago Macieira - thiago.macieira (AT) intel.com
Cloud Software Architect - Intel DCAI Cloud Engineering
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 5163 bytes
Desc: not available
URL: <http://lists.qt-project.org/pipermail/development/attachments/20231209/bf2821b3/attachment.bin>
More information about the Development
mailing list