[Interest] Why int for size() of containers instead of quint32?

Jason H jhihn at gmx.com
Wed May 18 23:02:32 CEST 2016



> Sent: Wednesday, May 18, 2016 at 4:04 PM
> From: "André Pönitz" <apoenitz at t-online.de>
> To: "Николай Шатохин" <n.shatokhin at gmail.com>
> Cc: "interest at qt-project.org" <interest at qt-project.org>
> Subject: Re: [Interest] Why int for size() of containers instead of quint32?
>
> 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-*

1. "2^31-1 aught to be enough for anybody"
2. I use "q"-prefixed datatypes when writing portable code. quint32, qint32, etc. 




More information about the Interest mailing list