Sorry I just found, there will be just one detach. but still I wasn't aware that it don't call cost variant. So thx for that link http://eel.is/c++draft/over.match
On Thu, Sep 20, 2018 at 1:15 PM Michal Lazo <xlazo...@gmail.com> wrote: > But for example > > http://code.qt.io/cgit/qt/qtbase.git/tree/src/gui/text/qtextcursor.cpp#n1487 > in this code I found at least 4 x detach > void QTextCursor::deleteChar() > { > if (!d || !d->priv) 1x detach > return; > > if (d->position != d->anchor) 2x detach removeSelectedText(); > return; } > { > if (!d->canDelete(d->position)) only 1x detach > return; > d->adjusted_anchor = d->anchor = d->priv->nextCursorPosition(d->anchor, > QTextLayout::SkipCharacters); 1x detach > d->remove(); > d->setX(); > } > > On Thu, Sep 20, 2018 at 1:01 PM Giuseppe D'Angelo via Interest < > interest@qt-project.org> wrote: > >> On 20/09/18 12:43, Michal Lazo wrote: >> > "So my whole C++ world just changed." >> > Can you point me to right article in C++ documentation ? >> >> http://eel.is/c++draft/over.match >> >> See in particular [over.match.funcs] ยง11.3.1.4 , and then you need to >> reason about the implications for the overload resolution. >> >> >> > So Qt devs I found some code for example >> > >> http://code.qt.io/cgit/qt/qtbase.git/tree/src/gui/text/qtextcursor.cpp#n1151 >> > And it looks like it should be better to call const variant >> > what do you think ?? >> >> Possibly, but what's the big drama about that line? >> >> >> It's not a mistery that QSharedDataPointer is very prone to "accidental" >> detaches, so its usage is frowned upon in new code, in favour of >> QExplictlySharedDataPointer (which however requires manual calls to >> detach(), and one needs to remember about them). >> >> For instance, in a setter such as >> >> > void MyClass::setFoo(int newFoo) { >> > if (d->foo == newFoo) >> > return; >> > d->foo = newFoo; >> > } >> >> (assuming d is a QSharedDataPointer<MyClassPrivate>) the d->foo access >> in the if is supposed to be "readonly", yet it happily detaches the >> private, even if the new value passed to the setter is identical to the >> old value and thus one might expect that nothing needs to be done. >> >> (No, noone is porting QTextCursor away from QSharedDataPointer at this >> moment in time.) >> >> >> My 2 c, >> -- >> Giuseppe D'Angelo | giuseppe.dang...@kdab.com | Senior Software Engineer >> KDAB (France) S.A.S., a KDAB Group company >> Tel. France +33 (0)4 90 84 08 53, http://www.kdab.com >> KDAB - The Qt, C++ and OpenGL Experts >> >> _______________________________________________ >> Interest mailing list >> Interest@qt-project.org >> http://lists.qt-project.org/mailman/listinfo/interest >> >
_______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest