Hi,

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.
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?
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.

Paolo.

Reply via email to