[Development] qMoveToConst helper for rvalue references to movable Qt containers?
Lars Knoll
lars.knoll at qt.io
Sat Oct 27 19:48:45 CEST 2018
On 27 Oct 2018, at 19:29, André Pönitz <apoenitz at t-online.de<mailto:apoenitz at t-online.de>> wrote:
On Sat, Oct 27, 2018 at 04:33:30PM +0100, Sérgio Martins wrote:
On Sat, Oct 20, 2018 at 1:44 PM Elvis Stansvik <elvstone at gmail.com<mailto:elvstone at gmail.com>> wrote:
Hi all (first post),
Welcome :)
In Qt 5.7+ there's qAsConst, an std::as_const implementation for those
who are not on C++17 yet, which is convenient for iterating over Qt
containers using range-based for loops without causing a detach.
For good reasons there's no version of qAsConst that takes an rvalue
reference, so you can't do e.g. for (auto foo :
qAsConst(returnsQtContainer()) { ... }. Instead you must do const
auto stuff = returnsQtContainer(); for (auto foo : stuff) { ... }.
Should we instead just encourage people to make returnsQtContainer()
return a const container ?
This is actually a route we recently took in some cases in Qt Creator's
code base.
That might actually make sense. Calling a non const method on the returned temporary object is usually a mistake anyway. And the copy/move assignment to a variable will work with the const object.
Cheers,
Lars
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/development/attachments/20181027/dd07e61f/attachment.html>
More information about the Development
mailing list