On 27 Oct 2018, at 21:07, Elvis Stansvik <[email protected]<mailto:[email protected]>> wrote:
Den lör 27 okt. 2018 kl 19:48 skrev Lars Knoll <[email protected]<mailto:[email protected]>>: On 27 Oct 2018, at 19:29, André Pönitz <[email protected]<mailto:[email protected]>> 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 <[email protected]<mailto:[email protected]>> 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. Hm, but was Marc not right when he said "Making returned containers const inhibits move semantics, because const rvalues do not bind to the mutable rvalue references that move constructors and move assignment operators use." on his blog? Guess he should jump in here to defend himself :) No need. He’s right. A move constructor only works with a non const value, as it needs to modify the object. One thing to check however for our containers is how much more expensive the copy is (compared to the move). Cheers, Lars Elvis Cheers, Lars _______________________________________________ Development mailing list [email protected]<mailto:[email protected]> http://lists.qt-project.org/mailman/listinfo/development
_______________________________________________ Development mailing list [email protected] http://lists.qt-project.org/mailman/listinfo/development
