https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69626

            Bug ID: 69626
           Summary: [6 Regression] std::strtoll no longer defined in c++98
                    mode
           Product: gcc
           Version: 6.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libstdc++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: redi at gcc dot gnu.org
  Target Milestone: ---

for __cplusplus < 201103L bits/c++config.h does:

# ifndef _GLIBCXX_USE_C99_STDLIB
# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX98_USE_C99_STDLIB
# endif

but acinclude.m4 never defines _GLIBCXX98_USE_C99_STDLIB so the C99 stdlib.h
functions are no longer defined for C++98.

PR 69350 says we shouldn't be defining those non-C++98 functions anyway, but
removing them now was not intentional (and we probably don't want to remove
them for -std=gnu++98 anyway).



#include <cstdlib>

int main()
{
  &std::strtoll;
}

$ g++ -std=c++98 ll.cc
ll.cc: In function ‘int main()’:
ll.cc:5:4: error: ‘strtoll’ is not a member of ‘std’
   &std::strtoll;
    ^~~

ll.cc:5:4: note: suggested alternative:
In file included from /home/jwakely/gcc/6/include/c++/6.0.0/cstdlib:75:0,
                 from ll.cc:1:
/usr/include/stdlib.h:209:22: note:   ‘strtoll’
 extern long long int strtoll (const char *__restrict __nptr,
                      ^~~~~~~

Reply via email to