2013/4/26 Daniel Krügler <daniel.krueg...@gmail.com>: > 2013/4/26 Paolo Carlini <paolo.carl...@oracle.com>: >> 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. > > Jonathan recently submitted an LWG issue for this (not yet part of the > available list). I'm in the process to add the new issue within the > following days. He's essentially suggesting to remove get() from > C++14.
To clarify this: The C++ Standard currently refers to a get() function that does not exist anymore in the reference C99. So, its removal looks more than reasonable to me. > - Daniel > >> Paolo.