[Development] QList

Konstantin Tokarev annulen at yandex.ru
Thu May 25 12:38:37 CEST 2017



25.05.2017, 02:19, "Ville Voutilainen" <ville.voutilainen at gmail.com>:
> On 24 May 2017 at 22:25, Marc Mutz <marc.mutz at kdab.com> wrote:
>>  On 2017-05-24 15:12, Konstantin Tokarev wrote:
>>>  24.05.2017, 15:49, "NIkolai Marchenko" <enmarantispam at gmail.com>:
>>>>  A semi-sane idea that I think no one has suggested yet:
>>>>
>>>>  What if, starting from Qt6, QList becomes a wrapper for QArrayList with a
>>>>  contructor from this type?
>>>>  After all making existing code slightly _slower_ because of the wrapping
>>>>  overhead is way less problematic than breaking it outright.
>>>>  It will nudge the users of QLists that need to be fast to switch but will
>>>>  leave users of "default no brainer container" happy as they likely wouldn't
>>>>  even notice.
>>>
>>>  If existing Qt APIs switch from QList to QVector in Qt 6, such change
>>>  will make it hard to support both Qt 5 and Qt 6 in the same code base.
>>
>>  Which is why I suggested to make QList a type alias for QVector or
>>  QArrayList, depending on some yet-to-be-determined criteria. Obvious
>>  candidates algorithms are:
>
> I think we need to take a serious step backwards here. I, for various reasons,
> got the impression that a major problem at hand is that when a user (NOT in any
> template code, necessarily) uses QList<Foo>, that user doesn't know the
> consequences. 

Other problem, that IMO is more serious, is that Qt *requires* user to use QList,
by returning or taking it as and argument in various places. That's almost only
reason why I use QList in my code[*].

If Qt 6 APIs are changed from QList to QVector, lots of user code dealing with
this APIs will break, unless QList will become an alias of QVector.

[*] And, fwiw, almost only reason I use QString, but that's off-topic here

> Mostly because depending on the characteristics of Foo,
> the user doesn't know what the performance characteristics and semantics
> of QList<Foo> are, because QList might or might not use (in)direct storage.
>
> Perhaps I completely fail to understand the problem space. I (think I)
> have read Marc's writings
> on the subject matter, but chances are that the crux of the matter is
> still escaping me.
> How does it help anyone to create a new alias that still results in a
> concrete type
> the semantics of which still depend on the element type?
> _______________________________________________
> Development mailing list
> Development at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/development

-- 
Regards,
Konstantin



More information about the Development mailing list