On Saturday 18 March 2017 19:30:35 Thiago Macieira wrote:
> QVector<MyType> someFunction() // out-of-line
> {
> QtExclusive::QVector<MyType> vector;
> [ operate and populate vector ]
> return vector; // automatic move
> }
>
> in user code:
> QtExclusive::QVector<MyType> vector = someFunction(); //
> automatic move [ mutate some more ]
Breaks (N)RVO.
And since the code outside has no clue about whether the code inside the
function creates a shared or unshared QVector, the compiler will again have to
emit the whole QVector copy constructor/detach code (as dead code) at the call
site. You promised this would be gone in Qt 6 because of the removal of the
unsharable state.
> Why not std::vector? Because of the ability to put it back into shared mode,
std::shared_ptr<const std::vector>
Thanks,
Marc
--
Marc Mutz <[email protected]> | Senior Software Engineer
KDAB (Deutschland) GmbH & Co.KG, a KDAB Group Company
Tel: +49-30-521325470
KDAB - The Qt, C++ and OpenGL Experts
_______________________________________________
Development mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/development