This change would allow including <ciso646> to be used to check for __GLIBCXX__ and detect whether youre using libstdc++ or not. Howard Hinnant recommends including that header for libc++ because it has no other effects in C++.
We could make every <cxxx> header include <bits/c++config.h> so that any of them can be used, but I can't be bothered doing that change! This makes it work for the one header that is recommended to be used, but of course that doesn't help people using older versions of libstdc++, who still need to include some other header. Is this worth doing?
commit 0ac33b5beb231efc94ce4f0288fad36047f0325e Author: Jonathan Wakely <jwak...@redhat.com> Date: Thu Sep 3 11:45:29 2015 +0100 Make <ciso646> define libstdc++ version macros. PR libstdc++/65473 * include/c/ciso646: Include <bits/c++config.h> and improve comment. * include/c_global/ciso646: Likewise. * include/c_std/ciso646: Likewise. diff --git a/libstdc++-v3/include/c/ciso646 b/libstdc++-v3/include/c/ciso646 index 125f166..fb537f5 100644 --- a/libstdc++-v3/include/c/ciso646 +++ b/libstdc++-v3/include/c/ciso646 @@ -27,6 +27,6 @@ * in your programs, rather than any of the "*.h" implementation files. * * This is the C++ version of the Standard C Library header @c iso646.h, - * and its contents are (mostly) the same as that header, but are all - * contained in the namespace @c std. + * which is empty in C++. */ +#include <bits/c++config.h> diff --git a/libstdc++-v3/include/c_global/ciso646 b/libstdc++-v3/include/c_global/ciso646 index 818db67..c59677a 100644 --- a/libstdc++-v3/include/c_global/ciso646 +++ b/libstdc++-v3/include/c_global/ciso646 @@ -27,7 +27,6 @@ * in your programs, rather than any of the @a *.h implementation files. * * This is the C++ version of the Standard C Library header @c iso646.h, - * and its contents are (mostly) the same as that header, but are all - * contained in the namespace @c std (except for names which are defined - * as macros in C). + * which is empty in C++. */ +#include <bits/c++config.h> diff --git a/libstdc++-v3/include/c_std/ciso646 b/libstdc++-v3/include/c_std/ciso646 index 08cdf24..ab44488 100644 --- a/libstdc++-v3/include/c_std/ciso646 +++ b/libstdc++-v3/include/c_std/ciso646 @@ -27,7 +27,6 @@ * in your programs, rather than any of the @a *.h implementation files. * * This is the C++ version of the Standard C Library header @c iso646.h, - * and its contents are (mostly) the same as that header, but are all - * contained in the namespace @c std (except for names which are defined - * as macros in C). + * which is empty in C++. */ +#include <bits/c++config.h>