[Interest] Why int for size() of containers instead of quint32?
André Pönitz
apoenitz at t-online.de
Wed May 18 22:04:41 CEST 2016
On Tue, Mar 29, 2016 at 10:29:38PM +0300, Николай Шатохин wrote:
> Hello.
>
> I see that Qt uses int type many times in containers implementations? Why?
> Why do you not use your own quint32? Why do you using signed and platform
> dependent type for this purpose?
Both signed-vs-unsigned, and 32bit-vs-sizeof(size_t) have been discussed
before on this and sibling lists multiple times. Please check the
archives.
Arguments that keep coming up:
1. 'int' is *not* platform-dependent on platform Qt runs on. It's always
32 bit signed two's complement. Serialization/deserialization of 'int'
is naturally cross-platform *on all supported platforms*.
2. the compiler does not need to handle signed int overflow, leaving
room for tighter code.
3. Negative offsets can be given usable interpretations (count from
end, or -1 as invalid)
4. unsigned breaks backward index loop idioms
5. History.
6. Proof-by-guru:
B.S: "Using an unsigned instead of an int to gain one more bit
to represent positive integers is almost never a good idea.
Attempts to ensure that some values are positive by declaring
variables unsigned will typically be defeated by the implicit
conversion rules" (TC++PL)
S.M: www.aristeia.com/Papers/C++ReportColumns/sep95.pdf
7. Counter-proof-by-guru:
A.K: http://www.drdobbs.com/cpp/the-case-against-int-part-*
Etc, etc.
Andre'
More information about the Interest
mailing list