[Development] Upgrading the sources to C++11 keywords (Q_NULLPTR, etc.)
Thiago Macieira
thiago.macieira at intel.com
Tue Feb 10 23:17:07 CET 2015
On Tuesday 10 February 2015 23:10:01 André Pönitz wrote:
> > > Can't you simply wait until 'nullptr' is available? Do you really *need*
> > > to use macros instead of the core language?
> >
> > We go back to the discussion of VS2008. That's the only major compiler we
> > still care about that doesn't support it.
>
> You are inventing a problem that does not exist.
>
> '0' has served well enough as a null pointer constant in the past. There is
> no doubt it will do so for a few more years. VS2008 will be not an issue
> then.
>
> Getting the headers "clean" for the folks that "need" to turn on each and
> every possible compiler warning (and then can't stand the heat...) is one
> thing. Fine. Let them have Q_NULLPTR in the headers.
>
> But littering the implementation with it and keeping up the claim that
> replacing a core C++ idiom by *A MACRO* would be a step to _modernize_ is
> completely inapprehensible.
I understand that. I was not advocating in favour of using Q_NULLPTR or in
favour of preventing its use.
I merely reacted to your suggestion that we wait for the ability to use
nullptr itself. We can do that as soon as VS2008 is no longer a concern. Until
then, we can't discuss this.
My current thinking is:
1) modernise our headers with macros, now
2) allow people to use Q_NULLPTR where it helps with readability
3) disallow replacing of zeroes with Q_NULLPTR except as required by rules #1
or #2
Two examples:
a) void *ptr = 0;
b) str.toInt(0, 0);
In (a), use of Q_NULLPTR would make the code noisier, so don't use it. In (b),
the first 0 could be replaced with Q_NULLPTR to indicate that yes we know it's
a pointer, as opposed to an integer.
--
Thiago Macieira - thiago.macieira (AT) intel.com
Software Architect - Intel Open Source Technology Center
More information about the Development
mailing list