Boost logo

Boost :

Subject: Re: [boost] [config] Macro for null pointer
From: Jeffrey Lee Hellrung, Jr. (jeffrey.hellrung_at_[hidden])
Date: 2012-11-29 02:23:47


On Wed, Nov 28, 2012 at 11:15 PM, Andrey Semashev <andrey.semashev_at_[hidden]
> wrote:

> On Wed, Nov 28, 2012 at 8:43 PM, Jeffrey Lee Hellrung, Jr.
> <jeffrey.hellrung_at_[hidden]> wrote:
> >>
> >> using boost::nullptr;
> >>
> >
> > One thing I wonder about is if this using declaration is The Right Thing
> To
> > Do. An alternative is to provide a macro to bring the nullptr identifier
> > into the current scope (and which does nothing in C++11).
>
> I don't like the macro with using declaration. I'd rather have this
> using declaration in the header, with possibility to disable it by
> defining a config macro:
>
> #ifndef BOOST_NO_GLOBAL_NULLPTR
> using boost::nullptr;
> #endif
>
> And I want this declaration to be enabled by default since the
> language keyword is not scoped in a namespace and that's what we try
> to emulate. The macro switch is only there to solve problems if they
> arise.
>

Eh I don't think it's a good idea to control scope via a configuration
macro. Anything that uses it unqualified (and which you have no control
over) would suddenly break upon disabling the using declaration.

In bringing this up, I'm thinking of the case in which some other 3rd party
decided that they, too, wanted to provide a nullptr emulation, so now we
have 2 conflicting nullptr identifiers at global scope. That makes Boost
and this 3rd party library unusable together.

- Jeff


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk