diff --git a/include/nlohmann/detail/macro_scope.hpp b/include/nlohmann/detail/macro_scope.hpp index fceebda06..734414e0e 100644 --- a/include/nlohmann/detail/macro_scope.hpp +++ b/include/nlohmann/detail/macro_scope.hpp @@ -137,6 +137,12 @@ // ranges header shipping in GCC 11.1.0 (released 2021-04-27) has a syntax error #if defined(__GLIBCXX__) && __GLIBCXX__ == 20210427 #define JSON_HAS_RANGES 0 + // libstdc++ < 12 has incomplete C++20 ranges (issue #4440) + #elif defined(_GLIBCXX_RELEASE) && _GLIBCXX_RELEASE < 12 + #define JSON_HAS_RANGES 0 + // libc++ < 16 has incomplete C++20 ranges (issue #4440) + #elif defined(_LIBCPP_VERSION) && _LIBCPP_VERSION < 160000 + #define JSON_HAS_RANGES 0 #elif defined(__cpp_lib_ranges) #define JSON_HAS_RANGES 1 #else diff --git a/single_include/nlohmann/json.hpp b/single_include/nlohmann/json.hpp index 0a1ea1d0e..6dbeba757 100644 --- a/single_include/nlohmann/json.hpp +++ b/single_include/nlohmann/json.hpp @@ -2501,6 +2501,12 @@ JSON_HEDLEY_DIAGNOSTIC_POP // ranges header shipping in GCC 11.1.0 (released 2021-04-27) has a syntax error #if defined(__GLIBCXX__) && __GLIBCXX__ == 20210427 #define JSON_HAS_RANGES 0 + // libstdc++ < 12 has incomplete C++20 ranges (issue #4440) + #elif defined(_GLIBCXX_RELEASE) && _GLIBCXX_RELEASE < 12 + #define JSON_HAS_RANGES 0 + // libc++ < 16 has incomplete C++20 ranges (issue #4440) + #elif defined(_LIBCPP_VERSION) && _LIBCPP_VERSION < 160000 + #define JSON_HAS_RANGES 0 #elif defined(__cpp_lib_ranges) #define JSON_HAS_RANGES 1 #else