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

            Bug ID: 91480
           Summary: Nonconforming definitions of standard library
                    feature-test macros
           Product: gcc
           Version: 9.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libstdc++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: frankhb1989 at gmail dot com
  Target Milestone: ---

These macros are lacking of the `L` suffix compared to the content of the table
in [support.limits.general]. This can lead to some unexpected effects on
observable behavior, e.g.:

#include <string>
#include <iostream>
#define macro_as_string(x) #x
#define stringized_length(x) std::string(macro_as_string(x)).size()
int main()
{
        std::cout << stringized_length(__cpp_lib_nonmember_container_access);
}

Also, in <bits/allocator.h>, `__cpp_lib_allocator_traits_is_always_equal` is
wrongly spelled as `__cpp_lib_allocator_is_always_equal`.

Reply via email to