[C++ Patch] Define __cplusplus == 201300L for -std=c++1y
Jakub Jelinek
jakub@redhat.com
Fri Apr 26 11:22:00 GMT 2013
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.
> Thanks Jason.
>
> 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
already?
Jakub
More information about the Gcc-patches
mailing list