On 16/12/2019 15:26, Glen Fernandes wrote:
A problem has arisen which requires input from boost-dev. Some Boost libraries define as part of their public API a non-BOOST_-prefixed macro which changes the definition of their header files e.g.
PHOENIX_LIMIT
(just to be clear, Phoenix is not the only library doing this)
If we change such macros to be like BOOST_PHOENIX_LIMIT instead, all existing code using Boost which sets PHOENIX_LIMIT would potentially *silently* break.
What we could decide to do instead is:
#if defined(PHOENIX_LIMIT) && !defined(BOOST_PHOENIX_LIMIT) #error In Boost 1.xx PHOENIX_LIMIT was renamed to BOOST_PHOENIX_LIMIT. Please upgrade your code to reflect the new name. #endif
Or one could just leave PHOENIX_LIMIT named as is.
What would Boost developers prefer we do?
I would leave these as-is. Boost isn't defining them.
Unfortunately multiple Phoenix-using Boost libraries DO define this macro. (And yes, that would cause significant end user surprise as the end user setting would get silently ignored sometimes, but as one of the older Boost libraries, I would guess everybody that cares has adjusted by now) Niall