An easy check is to #define __ASSERTMACROS__ somewhere before you include any files. [ assuming no precompiled headers ]
As for changing boost, I'm not the best person to say. It really annoys me that Apple defines those macros; they're useful names, not all caps, and the functionality that they implement makes code (IMSHO) harder to read.
My suggestion would be to avoid them (the macros) altogether - by not including that header file.
This is it... i added : #if defined(__ASSERTMACROS__) || defined(check) #error This file define check macro and this is a serious issue... #endif in the 3 files : boost/iostreams/filter/bzip2.hpp boost/iostreams/detail/is_dereferenceable.hpp boost/detail/is_incrementable.hpp juste before the place where code begins... And the #error directive does trigger... So far, as i don't know where this assertion header is included from, I did renamed the "check" and "check_error" on boost side... I'll check soon with Xcode 3.1 released today if it does happen too... Regards, Mathieu -- http://www.incub.net/