Boost logo

Boost :

Subject: Re: [boost] [config] What to call macros to indicate deprecated/removed components
From: Glen Fernandes (glen.fernandes_at_[hidden])
Date: 2017-04-16 11:53:40


On Sun, Apr 16, 2017 at 6:57 AM, John Maddock via Boost wrote:
> We now have several former C++ features which are removed in C++17:
>
> auto_ptr
>
> random_shuffle
>
> binders
>
> unary/binary_function
>
> And we're getting requests for configuration macros for these, the question
> is what to call them?
>
> We could stick with the (easy to implement) existing naming and just use:
>
> BOOST_NO_<FEATURE>
>
> or we could use:
>
> BOOST_<STD>_REMOVED_<FEATURE>
>
> which is a bit more work as all the scripts that rely on the
> BOOST_NO/BOOST_HAS convention need updating.
>
> Any other suggestions/preferences?
>
> Thanks, John.

I like BOOST_NO_FEATURE for features just outright removed.

Removal probably doesn't require a C++ standard version in the macro
since its effects are the same even if it happens many times over, for
some reason. (e.g. If std::exchange was removed in C++20, then added
back in C++2y, then removed in C++2z, there would be no difference
between BOOST_CXX20_REMOVED_STD_EXCHANGE and
BOOST_CXX2Z_REMOVED_STD_EXCHANGE.)

I just didn't like BOOST_NO_CXX17_FEATURE style if FEATURE does not
even exist in C++17 because it is misleading compared to the other
macros which check for existence of features.[1]

Glen

[1] https://github.com/boostorg/config/pull/131


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