[Development] RFF: nullptr rules

Matthew Woehlke mwoehlke.floss at gmail.com
Wed Dec 9 16:19:38 CET 2015


On 2015-12-09 10:14, Marc Mutz wrote:
> in 5.7, nullptr (Q_C_NULLPTR) is required to be supported by the compiler, but 
> there are no guidelines as to its use in the coding conventions (to the extent 
> they need to be in there).
> 
> I propose the following, based on Thiago's proposal from January this year, 
> considering the new situation that we now require nullptr support in the 
> compiler:
> [...]
> - compilers that have it, will have -Wzero-as-nullptr-constant added during
>   headersclean[0]

Yay! :-) Yes, please, for exactly the reason you gave.

> - APIs that require the use of nullptr for disambiguation are discouraged,
>   but may be acceptable to be decided on a case-by-case basis.

On that note, there *is* one case in which '0' as nullptr makes sense...
default values for QFlags. A literal '0' "looks like" an empty bitset
much more than 'nullptr', even though IIRC it actually ends up
implemented via a void* ctor. This probably means that those should be
changed to use '{}' as the default initializer instead (i.e. not
'nullptr'). I'm not sure what this means for compiler support (i.e. if
any compilers that Qt still supports don't support it), though I do know
offhand it does exclude GCC < 4.7.

(Alternatively, there could be a qNullFlag or some such, but that might
have compatibility problems.)

> Arguments against:
> - it's uglier than "0", and more to type

FWIW, I'm with Sergio here; not sure I agree about it being "uglier"...
it's certainly more obvious that 'nullptr' is... a null pointer, and not
an integer literal...

(And, likewise, I'm more sympathetic to '0' vs. 'Q_NULLPTR'. But since
that's not what we're talking about...)

-- 
Matthew




More information about the Development mailing list