Boost logo

Boost :

Subject: Re: [boost] [config][mpl][type_traits][integer] BOOST_STATIC_CONSTANT should use constexpr
From: Vicente J. Botet Escriba (vicente.botet_at_[hidden])
Date: 2013-04-20 05:06:45


Le 20/04/13 10:39, Antony Polukhin a écrit :
> 2013/4/20 Vicente J. Botet Escriba <vicente.botet_at_[hidden]>:
>> Hi,
> <...>
>> The main problem is that this is a *breaking change*: the list of concerned
>> libraries is quite big (mpl, type_traits/integer_traits, ...) and users of
>> BOOST_STATIC_CONSTANT would need to make this modification also.
> Can you please show, what code may it break?
>
>
My sentence

"Library providing a template class containing a field with such a
change that can be specialized by the user would need to either announce
a breaking change or just don't use the new macro. "

was wrong.

Anyway, the breaking change for the user is the following: If a user had
a template such as

template <typename T>
struct trait {
  BOOST_STATIC_CONSTANT(bool, value=false);
};

template <typename T>
const bool trait::value;

it would need now to change it to

template <typename T>
const BOOST_CONSTEXPR_OR_CONST trait::value;

The good thing is that the breaking change would be signaled at compile
time.

Would it be preferable to add BOOST_STATIC_CONSTANT_11 and change every
use of BOOST_STATIC_CONSTANT by BOOST_STATIC_CONSTANT_11 and deprecate
BOOST_STATIC_CONSTANT?

Let me know if my analysis is wrong.

Best,
Vicente


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