On 22/06/2016 13:16, Jason Mancini wrote:
You should probably have an ABI compatibility namespace if defining this differently on each end causes ABI breakage.
For instance, we have 45 boost installations (boost version * gcc versions * 32/64 bit * options), and 30 valgrind installations. That would require 1350 boost+valgrind installations to generate all possible debug cases, hahaha. [...] My solution is to force the define in the 7 header files that use it, such that it is always enabled, for the library/installation build, and all end-user code. Because ABI class layout mismatches are horrible to debug, we've been through that before.
That's the point of defining ABI namespaces (in Boost.Context, not in your code). If the settings are mismatched then you'll get a link error instead of UB -- provided that the library author has correctly identified all the settings that change the ABI, of course.