On Monday, 20 June 2022 07:46:57 PDT Giuseppe D'Angelo via Development wrote: > A fancy name for: "if a function/class is operating on a rvalue, should > it store a copy of it in order to keep it alive?". Consider
In other words, remove the rvalue reference and store a copy from the const- lvalue reference overload you already have. > > std::u16string someLongString = u"..."; > > auto tokenizer = QStringTokenizer(someLongString, u"X"); > > For this reason QStringTokenizer moves and stores the input if it's an > rvalue, but only keeps a reference if it's an lvalue. This means QStringTokenizer must have a QString member and a QString & member. The simplest implementation removes one of them. > > QString s = getString(); > > auto tok = QStringTokenizer(s, u"x"); > > would take a copy (given `s` is a view after [4]), while now it only > takes a reference. Yup. > Opinions? My only objection is to calling this by a fancy name, "rvalue pinning". Simply call what it is: take all parameters by const-lvalue and never store a reference. -- Thiago Macieira - thiago.macieira (AT) intel.com Cloud Software Architect - Intel DCAI Cloud Engineering _______________________________________________ Development mailing list Development@qt-project.org https://lists.qt-project.org/listinfo/development