This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [patch] libstdc++/65473 Make <ciso646> define libstdc++ version macros.


On 09/03/2015 04:58 AM, Jonathan Wakely wrote:
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?

I'd say it's worth doing consistently, in every header. Users are
told by others (e.g., on various discussion forums) to expect to
be able to check what C++ library implementation they're using by
including any C++ standard header and testing the known version
macros.

Martin

PS Out of curiosity I looked to see which headers don't include
c++config.g.

$ (for f in cassert ccomplex cctype cerrno cfenv cfloat cinttypes ciso646 climits clocale cmath csetjmp csignal cstdalign cstdarg cstdbool cstddef cstdint cstdio cstdlib cstring ctgmath ctime cuchar; do printf " %-20s " "<$f>" && echo "#include <$f>" | ~/bin/gcc-5.1.0/bin/g++ -E -std=c++14 -xc++ - | grep -l "c++config\.h" | wc -l; done )
  <cassert>            0
  <ccomplex>           1
  <cctype>             1
  <cerrno>             0
  <cfenv>              1
  <cfloat>             0
  <cinttypes>          1
  <ciso646>            0
  <climits>            0
  <clocale>            1
  <cmath>              1
  <csetjmp>            1
  <csignal>            1
  <cstdalign>          1
  <cstdarg>            1
  <cstdbool>           1
  <cstddef>            1
  <cstdint>            1
  <cstdio>             1
  <cstdlib>            1
  <cstring>            1
  <ctgmath>            1
  <ctime>              1
<cuchar> <stdin>:1:18: fatal error: cuchar: No such file or directory
compilation terminated.
0


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]