On Wednesday, 2 September 2020 21:37:23 PDT Giuseppe D'Angelo via Development wrote: > On 03/09/2020 06:08, Thiago Macieira wrote: > > Because qsizetype is the same type as qint64, which is the same type as > > qlonglong (which exists for historical reasons, because older VC++ didn't > > support "long long"). > > I'm very sorry, I'm lost now -- are you using as a postulate "on 64 bit > systems"? I would've expected qsizetype to be 32 bits (on 32 bit systems)...
Yes, the issue only happens on 64-bit Unix systems. On 64-bit Windows and on all 32-bit systems, qsizetype and ptrdiff_t types match. > But while qint64 should not change / still be the same type of > qlonglong, why qsizetype has to be the same type qint64 and cannot be a > different type (say, ptrdiff_t)? qsizetype x = QRandomGenerator::system()->bounded(list.size()); See https://bugreports.qt.io/browse/QTBUG-86318 If we use all three types in Qt (int, long and long long), then we need all three in all the overload sets. Today we have int/qlonglong or qint32 / qint64 overload sets, with a few exceptions also adding long. > > qint64 v = QRandomGenerator::system()->bounded(str.toLongLong()); > > > > Does this compile or not? > > Devil's advocate: next to "toLongLong", why there isn't also "toInt64"? Because there's no toInt32 and toInt16 either. They can be added, or better yet we can use templates (toInteger<quint32>), but this API doesn't exist yet. > Or why does bounded() take int64, not long long? Do we have a policy on > which one to use where? This smells like we're making the situation > worse by increasing the mix&matching types in the APIs rather than > streamlining. Because most people want to add two functions to their overload sets: int / qlonglong or qint32 / qint64. By matching size_t / ptrdiff_t, we'll need to expand all those overload sets to three. Note: bounded() currently does not take any 64-bit type at all; only 32-bit. See task above to add the 64-bit ones. -- Thiago Macieira - thiago.macieira (AT) intel.com Software Architect - Intel DPG Cloud Engineering _______________________________________________ Development mailing list [email protected] https://lists.qt-project.org/listinfo/development
