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