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: Jakub Jelinek <jakub at redhat dot com>
- Cc: Jason Merrill <jason at redhat dot com>, "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>, Jonathan Wakely <jwakely dot gcc at gmail dot com>, Daniel Krügler <daniel dot kruegler at gmail dot com>
- Date: Fri, 26 Apr 2013 12:51:24 +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> <517A57C8 dot 9070309 at oracle dot com> <20130426104227 dot GO28963 at tucnak dot redhat dot com>
On 04/26/2013 12:42 PM, Jakub Jelinek wrote:
On Fri, Apr 26, 2013 at 12:32:40PM +0200, Paolo Carlini wrote:
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?
I guess Ulrich added this with the expectation that gets will be also
removed from C++1y. Has there been any discussions regarding that in the WG
Not to my best knowledge. I'm adding in CC Jonathan and Daniel too.
We could certainly mirror in the C++ library what glibc does, but at
this point it seems premature to me to assume that C++1y (C++14, in
practice) will be stricter than C++11 as regards gets.