
On Dec 3, 2013, at 1:21 PM, "John Maddock"
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.
That's what I was thinking, and I still think it's a good idea. It allows for either check, depending upon how one chooses to structure one's code. The header macro is general. The feature macros are stop-gaps. However, the latter are sufficient for the current need.
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.
We're in that gray area between in this case. ___ Rob (Sent from my portable computation engine)