[Development] QUIP 6: removing top-level const from return types

Thiago Macieira thiago.macieira at intel.com
Wed May 24 23:49:06 CEST 2017

On Wednesday, 24 May 2017 12:09:41 PDT Marc Mutz wrote:
> I maintain that they were forgotten. Well, or ignored.
>  From a quick grep in QtBase, two that caught my eye:
> - qvector.h: The solution is obvious, straight-forward, and BiC:
>    unexport QPolygon(F). Wasn't done. Wouldn't've broken anything.

That would imply exporting each of the out-of-line functions. That idea never 
occurred to us back then (and I still dislike because it uglifies the headers, 
but it's a reasonable solution for QPolygon(F)). Without this possibility in 
our pockets, the solution was incredibly hard and therefore matches my 

> - qregexp.cpp: They're also about removing const: from member
>    functions, this time. Code breaks, but is trivial to fix.

We were expecting to remove the entirety of QRegExp, so no one bothered 
because it would have been a wasted effort.

Also, they WERE removed. And then brought back in a git revert. See 
babd3e252b87a3b9c91cd44189d4fcb5cd8ab270. So this again qualifies as "not 

> If we don't even remember to do _that_ kind of trivial change, how can
> we, with a straight face, claim that we will handle all the ### Qt 6
> ones?

Let's try again. Find me trivial ### Qt5 that we left over.

> There are already 236 "### Qt 6" instances today, in QtBase alone.
> They all need to be looked at, understood, maybe re-evaluated, and
> implemented. The ones protected with QT_VERSION checks, otoh, will
> become active the day Ossi flips the switch and calls dev 6.0.0.

And we'll find issues like the qregexp one that don't work or break too much 
because no one tested them, but unlike a steady change where we can detect 
what change caused the breakage, we'll get them all at once and we'll have to 
spend time investigating.

I'm not saying we shouldn't use the QT_VERSION_CHECK trick, but we should use 
it judiciously.

Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center

More information about the Development mailing list