[Development] QList

André Pönitz apoenitz at t-online.de
Sat Mar 18 19:46:24 CET 2017


On Sat, Mar 18, 2017 at 11:30:35AM -0700, Thiago Macieira wrote:
> Em sábado, 18 de março de 2017, às 05:54:20 PDT, André Pönitz escreveu:
> > Aliasing QList to QVector might be a feasible option, or maybe replacing
> > QList implementation by QVector's, and replacing QVector by something
> > not reference-counted.
> 
> My plan (which is still not discussed properly and not proven to be feasible) 
> is to provide both referece-counted and non-counted versions of QVector, 
> QString and QByteArray.
> 
> QVector (and, in fact, all the containers) is easy because it's a template in 
> the first place. Performing std::move from QtExclusive::QVector (name to be 
> discussed) to QVector transfers the array and starts the reference counting; 
> std::move in the other direction also transfers if the reference count is 
> still 1, copying otherwise. That allows code like:
> 
> 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 ]
> 
> The objecitve is that the mutating code in [] above runs without having the 
> compiler generate superfluous checks for the reference count which we know to 
> be 1 and emit dead code for the detach() function.

That would pretty much address the biggest issues I currently have with
QVector.

Andre'



More information about the Development mailing list