|
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