[Development] What's Q_PRIMITIVE_TYPE for?

Giuseppe D'Angelo giuseppe.dangelo at kdab.com
Wed Nov 11 12:04:46 CET 2020


Il 10/11/20 20:00, Giuseppe D'Angelo via Development ha scritto:
> Yes, sure. But also something like QStringView, which is (char16_t*,
> qsizetype), is a primitive type (assuming all-0 representation for a
> null pointer).

Just to insist on this: there are no guarantees coming from the Standard 
that null pointers are all 0 bits. The only guarantees, if any, come 
from our platforms / platforms' ABI.

For instance , on the Itanium ABI:

* struct A { int a, b; }; can be value-initialized with 0 bits
* struct B { int *ptr; }; can be value-initialized with 0 bits
* struct C { int A::* ptr; }; *CANNOT BE VALUE-INITIALIZED* with 0 bits.

Because null pointers to data members are initialized with the value 
"-1". https://gcc.godbolt.org/z/3aWWYx

So, one has to be extremely careful with marking something as primitive, 
and I don't think we have any tests regarding this (but we don't run on 
any platform with "fancy" null pointers either, I guess).


Thanks,
-- 
Giuseppe D'Angelo | giuseppe.dangelo at kdab.com | Senior Software Engineer
KDAB (France) S.A.S., a KDAB Group company
Tel. France +33 (0)4 90 84 08 53, http://www.kdab.com
KDAB - The Qt, C++ and OpenGL Experts

-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 4329 bytes
Desc: Firma crittografica S/MIME
URL: <http://lists.qt-project.org/pipermail/development/attachments/20201111/663fb1b5/attachment.bin>


More information about the Development mailing list