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

Reply via email to