
Beman says that we often define a header macro which says that the header doesn't exist when the header exists, but is incomplete. This is correct.
You then - apparently - suggested that we do that (pretend that the header doesn't exist), but in addition, supply other macros that signify that the header exists and provides some feature. I disagree that we should do that. (I say apparently because I wasn't sure that you did, hence my "if" qualifier above.)
I think that in such a situation we should provide the feature macros, without a header macro. Any positive claim that a feature X exists and works implies the existence of the header. The header macro is - in this case - redundant.
Right, that's basically what we've always done: BOOST_NO_HEADER : when not defined, header exists and mostly (usefully) works. BOOST_NO_HEADER_FEATURE : when not defined then some "advanced" feature not covered by the above also works. Of course deciding what you class as advanced vs usefully works is always troublesome. John.