https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67195
--- Comment #5 from Jeffrey Walton <noloader at gmail dot com> --- (In reply to Andrew Pinski from comment #3) > (In reply to Jeffrey Walton from comment #2) > > > > > > $ uname -a > > > Linux localhost.localdomain 4.1.3-201.fc22.x86_64 #1 SMP Wed Jul 29 > > > 19:50:22 > > > UTC 2015 x86_64 x86_64 x86_64 GNU/Linux > > > > > > $ g++ --version > > > g++ (GCC) 5.1.1 20150618 (Red Hat 5.1.1-4) > > > Copyright (C) 2015 Free Software Foundation, Inc > > > > (In reply to Jonathan Wakely from comment #1) > > > The library macro is defined by the library, not the compiler. You didn't > > > include any library headers. > > > > Thanks Jonathon. > > > > The documentation does not state that requirement. Perhaps this is a > > documentation bug? > > I think the document assumes that since this is the library docs rather than > the compiler or preprocessor doc n Yeah, I have the problem of "literal readings" in real life, too. When I parsed the page on macros, I found it to be an interesting implementation detail. And I thought it was useful to know cpp or g++ fetched the macro from c++config.h. (A related factoid is LLVM uses <ciso646>). But because I was not explicitly told to include c++config.h or another standard library header for the define, I did not make the leap it was a requirement. For me (naively), 'cpp' or 'g++ -dM' provide the preporcessor macros used to compile a source file, and the way they are delivered to me is indistinguishable from magic.