[Development] Proposal: Deprecate QVector in Qt 6
André Somers
andre at familiesomers.nl
Thu Apr 23 11:21:05 CEST 2020
Hi Simon,
On 23-04-20 10:55, Simon Hausmann wrote:
> Hi,
>
> So take for example this function in QIconEngine:
>
> virtual QList<QSize> availableSizes(QIcon::Mode mode =
> Icon::Normal, QIcon::State state = QIcon::Off) const;
>
> If we change that to QVector, we require our users to clutter their
> code base with #ifdefs. If we keep it with QList but use QVector in
> all non-virtual functions, then we create a less consistent API.
>
> Do you think the #ifdefs or inconsistency is worth the proximity to
> the standard? (despite QVector not being like std::vector due to CoW
> semantics)
I may be missing the obvious, but I really fail to see the problem if
you change the signature to
virtual QVector<QSize> availableSizes(...);
If we have that
template<typename T> using QList = QVector<T>;
a subclass reimplementing using QList should just work in both Qt5 and
Qt6, right? So what #ifdef's would be needed?
And yes, I _do_ think staying close to the established meaning of what
is a vector and what is a list is good. Getting list of QList (which is
not a list) brings us closer to that goal.
André
>
> Simon
> ------------------------------------------------------------------------
> *From:* Daniel Engelke <daniel.engelke at basyskom.com>
> *Sent:* Thursday, April 23, 2020 10:52
> *To:* Simon Hausmann <Simon.Hausmann at qt.io>
> *Cc:* development at qt-project.org <development at qt-project.org>
> *Subject:* Re: [Development] Proposal: Deprecate QVector in Qt 6
> Hi Simon,
>
> I think having a name that is close to the standard is very important
> as it makes it easy to find the Qt counterpart.
> Back in the days I had to ask a StackOverflow question to find Qts
> unique_ptr (QScopedPointer), because I couldn't find it due to the naming.
>
> Dmitriy also has a very valid point. It is burned in a lot of peoples
> heads that using QList is a bad idea.
>
> I don't see a lot of work in string replacing QList with QVector and
> QStringList with whatever it would be, as long as the API is compatible.
> It's even less work if auto has been used.
>
> Dan
>
>
> *From: *Simon Hausmann <Simon.Hausmann at qt.io>
> *To: *Dmitriy Purgin <dpurgin at gmail.com>
> *Cc: *"development at qt-project.org" <development at qt-project.org>
> *Sent: *4/23/2020 10:27 AM
> *Subject: *Re: [Development] Proposal: Deprecate QVector in Qt 6
>
> Hi Dmitriy,
>
> No, this is not an April's Foolk joke.
>
> Previous discussions were largely centred around the
> implementations and bringing them together. With this thread my
> concern is the API and the churn our users would have to apply to
> their code base in order to use Qt 5 and Qt 6.
>
>
> Simon
> ------------------------------------------------------------------------
> *From:* Dmitriy Purgin <dpurgin at gmail.com>
> *Sent:* Thursday, April 23, 2020 9:53
> *To:* Simon Hausmann <Simon.Hausmann at qt.io>
> *Cc:* development at qt-project.org <development at qt-project.org>
> *Subject:* Re: [Development] Proposal: Deprecate QVector in Qt 6
> Hi Simon,
>
> I hope it's not a belated April's Fool joke? As far as I can
> remember, for the past few years, one would read everywhere to
> switch to QVector from QList because of this and that, and to
> choose QVector as the default choice container instead of QList
> like it was back in the days. I can't give the exact references
> but that's just the feeling I get from reading the docs and the Qt
> mailing lists.
>
> Cheers
> Dmitriy
>
> On Thu, Apr 23, 2020 at 9:45 AM Simon Hausmann
> <Simon.Hausmann at qt.io <mailto:Simon.Hausmann at qt.io>> wrote:
>
> Hi,
>
> In dev we've had QVector being an alias for QList for a while
> now. For the 6.0 release this particular topic (QList/QVector)
> suggests two goals (among others):
>
> (1) Use the same type throughout the public API of Qt.
>
> (2) Make it easy for our users to maintain a code base
> that works with Qt 5 and 6.
>
>
> In the light of those two goals, I think we should keep using
> QList as the type in the public API. I don't think we should
> do a search and replace activity and switch to QVector. In the
> light of that, I would like to propose simply deprecating
> QVector and stick to QList everywhere.
>
>
> What do you think?
>
>
> Simon
> _______________________________________________
> Development mailing list
> Development at qt-project.org <mailto:Development at qt-project.org>
> https://lists.qt-project.org/listinfo/development
>
>
>
> _______________________________________________
> Development mailing list
> Development at qt-project.org
> https://lists.qt-project.org/listinfo/development
>
>
> _______________________________________________
> Development mailing list
> Development at qt-project.org
> https://lists.qt-project.org/listinfo/development
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/development/attachments/20200423/ec51a2fe/attachment.html>
More information about the Development
mailing list