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. -- Best regards, Antony Polukhin