Re: [boost] [config][mpl][type_traits][integer] BOOST_STATIC_CONSTANT should use constexpr
Le 20/04/13 14:33, Vicente J. Botet Escriba a écrit :
Le 20/04/13 13:18, Antony Polukhin a écrit :
2013/4/20 John Maddock
: <...> No that's correct as is:
* if BOOST_NO_INCLASS_MEMBER_INITIALIZATION is defined, then the constant is really an enum and there should be no out-of-line definitions. * if BOOST_NO_INCLASS_MEMBER_INITIALIZATION is *not* defined, then the constant *should* have the out-of-line definition in case it's address is taken/used. Oh, now I see, thanks.
As for the original question, this is such a pervasive breaking change, I think a new macro is inevitable I'm afraid :-( New macro will do exactly what the old macro did, but using C++11 feature. Code in all Boost libraries will be changed to use new macro. So the old macro will be required only for users code that use macro and attempts to take address of constant...
To me, it looks less obscuring to have one macro and a note for users to use BOOST_CONSTEXPR_OR_CONST for out-of-line definition; than two macro (which one shall be used by default?) that do the same thing but very slightly differ in details.
Just to add some information about some uses
grep -r BOOST_NO_INCLASS_MEMBER_INITIALIZATION * | wc -l 113 grep -r BOOST_STATIC_CONST * | wc -l 6598
The figures are a little bit better :) grep -r BOOST_STATIC_CONSTANT * | grep -v svn | wc -l 3030 grep -r BOOST_NO_INCLASS_MEMBER_INITIALIZATION * | grep -v svn | wc -l 57 Best, Vicente
participants (1)
-
Vicente J. Botet Escriba