https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92688
--- Comment #7 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to SODA Noriyuki from comment #6) > the pthread symbols in PR 21327 become visible with -D_XOPEN_SOURCE=700 > without -D_GNU_SOURCE. > the M_PI symbol in PR 11196 becomes visbile with -D_XOPEN_SOURCE=700 too. > is there any other symbols which are necessary for -std=c++11, but invisible > with -D_XOPEN_SOURCE=700 ? Libstdc++ cannot define _XOPEN_SOURCE though, because it could conflict with something the user defines. The correct fix is for glibc to expose the required names by some other method (a "backdoor" just for libstdc++) and not require any feature macros that users should be able to control. If a user doesn't want _XOPEN_SOURCE or _GNU_SOURCE then they should have the option to leave them undefined. I still plan to fix this, but it's not a top priority. This is really a dup of PR 11196 since it's the automatic definition of _GNU_SOURCE that causes non-standard names to be declared by glibc. *** This bug has been marked as a duplicate of bug 11196 ***