[Development] HEADS-UP: QStringLiteral

Thiago Macieira thiago.macieira at intel.com
Fri Aug 23 03:27:03 CEST 2019


On Thursday, 22 August 2019 14:41:51 PDT Matthew Woehlke wrote:
> On 22/08/2019 17.00, Thiago Macieira wrote:
> > For Qt 6, it is possible (and is still my goal[*]) to make creating a
> > QString out of a QStringView and through it from a u"" literal happen
> > in constant time, inlined, with no memory allocation.
> 
> How? Unless I miss something (which your example did not show),
> QStringView doesn't know if the memory to which it points is rodata or
> something else. If it's something else, you can't just stick it in a
> QString and hope for the best, because it could change or cease to be
> allocated at any time.

You're right, it can't be done through QStringView. Only from the origina; 
literal, via the trick in GCC (the same that they used for 
std::char_traits<char>::length()) that allows us to determine if it's a string 
literal. 

Another idea that has occurred to me is to extend QStringView to carry a non-
null d-pointer (without reference counting it) whenever it's created from a 
QString. That way, creating a QString from a QStringView that was created from 
a QString resumes the reference counting.
-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel System Software Products






More information about the Development mailing list