[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