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. - Daniel > Paolo.