This is the mail archive of the
mailing list for the GCC project.
Re: [C++ Patch] Define __cplusplus == 201300L for -std=c++1y
- From: Paolo Carlini <paolo dot carlini at oracle dot com>
- To: Jason Merrill <jason at redhat dot com>
- Cc: "gcc-patches at gcc dot gnu dot org" <gcc-patches at gcc dot gnu dot org>, Gabriel Dos Reis <gdr at integrable-solutions dot net>, Jakub Jelinek <jakub at redhat dot com>
- Date: Fri, 26 Apr 2013 12:32:40 +0200
- Subject: Re: [C++ Patch] Define __cplusplus == 201300L for -std=c++1y
- References: <51781E19 dot 9030802 at oracle dot com> <51782286 dot 7020303 at redhat dot com>
On 04/24/2013 08:20 PM, Jason Merrill wrote:
On 04/24/2013 02:02 PM, Paolo Carlini wrote:
+#if __cplusplus < 201300L
Don't test for this value. Use <= 201103L instead.
OK with that change.
Today I'm noticing an issue with the underlying <stdio> from glibc,
which makes our <cstdio> unusable. It does have:
#if !defined __USE_ISOC11 \
|| (defined __cplusplus && __cplusplus <= 201103L)
/* Get a newline-terminated string from stdin, removing the newline.
DO NOT USE THIS FUNCTION!! There is no limit on how much it will read.
The function has been officially removed in ISO C11. This opportunity
is used to also remove it from the GNU feature list. It is now only
available when explicitly using an old ISO C, Unix, or POSIX standard.
GCC defines _GNU_SOURCE when building C++ code and the function is still
in C++11, so it is also available for C++.
This function is a possible cancellation point and therefore not
marked with __THROW. */
extern char *gets (char *__s) __wur __attribute_deprecated__;
I don't think the header should check __cplusplus <= 201103L like that.
Jakub, Jason, what do you think?