[Development] HEADS-UP: QStringLiteral
Philippe
philwave at gmail.com
Tue Aug 20 12:41:45 CEST 2019
another Drawback : it causes a global mutex to be executed on first use
inside a block scope (c++11 static variable thread safety).
Philippe
On Tue, 20 Aug 2019 12:04:12 +0200
"Mutz, Marc via Development" <development at qt-project.org> wrote:
> Hi,
>
> In light of a recent attempt to re-introduce QStringLiteral, relacing
> QLatin1String, I'd like to remind everyone that QStringLiteral has a lot
> of drawbacks and should not be used unless it saves a memory allocation.
>
> Drawbacks include:
>
> - doubled storage requirements (2 bytes/char) over a L1/US-ASCII string
> - unsharability with C strings (each QStringLiteral contains a new
> lambda, lambdas have unique types, static data in token-for-token
> identical lambdas is duplicated, merging these violates the standard)
> - introduction of QString dtor calls (cannot be optimized away)
>
> Anti-patterns include: Using QStringLiteral in
>
> - comparisons (includes relational operators, indexOf, contains)
> - composition (QStringBuilder, append, prepend, arg() (now partly
> available on QStringView and QLatin1String, too)
> - lookup and, I believe, even insertion, in JSON and soon CBOR classes
> - debug statements (we prefer debug code to be compact, not fast)
> - arguments to any other function overloaded QStringView or
> QLatin1String
>
> Alternatives to QStringLiteral:
>
> - u"..." (? QStringView)
> - QLatin1String
>
> Please take note of the following recent developments:
>
> - arg(string, ...., string) ("multiArg") is available now on QL1S and
> QStringView
> - number formatting isn't, yet
> - You can use u"..." in Qt sources unconditionally
> - converts implicitly to QStringView
> - To convert QString ? QStringView, prefer qToStringViewIgnoringNull()
> when you don't need to distinguish between the null and the empty state.
> It saves a branch.
>
> Please help spreading this knowledge in review and your own work.
>
> Thanks,
> Marc
>
> _______________________________________________
> Development mailing list
> Development at qt-project.org
> https://lists.qt-project.org/listinfo/development
More information about the Development
mailing list