Le 20/04/13 10:39, Antony Polukhin a écrit :
2013/4/20 Vicente J. Botet Escriba
: 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