Btw, isn't the QStringView is the same as Range<Container>
{ Container::Iterator begin; Container::Iterator end; } ?
Why we introduce only QStringView/QByteArrayView? Maybe we should think
about adding range API to all containers?

Alexandrescus presentation about ranges:
http://www.slideshare.net/rawwell/iteratorsmustgo

2015-10-20 11:56 GMT+03:00 Smith Martin <martin.sm...@theqtcompany.com>:

> I guess we need QStringView for QString and QByteArrayView for QByteArray,
> etc.
>
> martin
>
> ________________________________________
> From: development-bounces+martin.smith=theqtcompany....@qt-project.org
> <development-bounces+martin.smith=theqtcompany....@qt-project.org> on
> behalf of Smith Martin <martin.sm...@theqtcompany.com>
> Sent: Tuesday, October 20, 2015 9:13 AM
> To: Marc Mutz; development@qt-project.org
> Subject: Re: [Development] RFC: Proposal for a semi-radical change in
>  Qt      APIs taking strings
>
> I see. But then, if I have QStringView, doesn't that eliminate most of the
> reasons for needing the other string containing classes? If I want the
> efficiency of QStringView, won't QString underneath always be the right
> choice?
>
> In Thiago's example, if I have a QStringView API on my class, would I ever
> want to switch the QString to a QByteArray?
>
> Does using QStringView with QString work as well or better than WByteArray
> et al?
>
> martin
>
> ________________________________________
> From: development-bounces+martin.smith=theqtcompany....@qt-project.org
> <development-bounces+martin.smith=theqtcompany....@qt-project.org> on
> behalf of Marc Mutz <marc.m...@kdab.com>
> Sent: Monday, October 19, 2015 11:26 PM
> To: development@qt-project.org
> Subject: Re: [Development] RFC: Proposal for a semi-radical change in
>  Qt      APIs taking strings
>
> On Monday 19 October 2015 21:56:54 Smith Martin wrote:
> > >This API here simply cannot exist because the returned value would be a
> > >dangling reference.
> >
> > I don't understand. Implicit for using the QStringView data() function is
> > knowing that once the QByteArray is set, it is never changed. Then the
> > data() function is ok, isn't it?
>
> A QStringView points to QChar* (or ushort*) while a QByteArray only
> provides
> char*. The fromLatin1() (say) call thus necessary will create a temporary
> QString, which will bind to the returned QStringView, but will already be
> destroyed (taking the data QStringView references with it) when control
> returns to the caller.
>
> This particular mistake is easy to prevent statically, though:
>
>    QStringView(QString &&) = delete;
>
> Thanks,
> Marc
>
> --
> Marc Mutz <marc.m...@kdab.com> | Senior Software Engineer
> KDAB (Deutschland) GmbH & Co.KG, a KDAB Group Company
> Tel: +49-30-521325470
> KDAB - The Qt Experts
> _______________________________________________
> Development mailing list
> Development@qt-project.org
> http://lists.qt-project.org/mailman/listinfo/development
> _______________________________________________
> Development mailing list
> Development@qt-project.org
> http://lists.qt-project.org/mailman/listinfo/development
> _______________________________________________
> Development mailing list
> Development@qt-project.org
> http://lists.qt-project.org/mailman/listinfo/development
>
_______________________________________________
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development

Reply via email to