The cassert header states: * This is the C++ version of the Standard C Library header @c assert.h, * and its contents are (mostly) the same as that header, but are all * contained in the namespace @c std. However, this bug report http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15771 indicates that the assert macro is (and should be) in the global namespace, not in std.
I have trouble considering this comment *wrong*: according to 17.4.1.2/4, it's generally true for all the C++ headers for C library facilities that "... the declarations and definitions (except for names which are defined as macros in C) are within namespace scope of the namespace std.". I'm not sure that we want to change that general comment, special casing it for <cassert>, <cerrno>, etc... Maybe mention macros behavior in all of them?
Fixed.