Move namespace ranges inside the feature test macro guard, because
'ranges' is not a reserved name before C++20.

libstdc++-v3/ChangeLog:

        * include/std/numeric (ranges): Only declare namespace for C++23
        and later.
        (ranges::iota_result): Fix indentation.
        * testsuite/17_intro/names.cc: Check ranges is not used as an
        identifier before C++20.
---

Tested x86_64-linux. Pushed to trunk.

 libstdc++-v3/include/std/numeric         | 8 +++-----
 libstdc++-v3/testsuite/17_intro/names.cc | 4 ++++
 2 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/libstdc++-v3/include/std/numeric b/libstdc++-v3/include/std/numeric
index 4d36fcd36d9..490963ee46d 100644
--- a/libstdc++-v3/include/std/numeric
+++ b/libstdc++-v3/include/std/numeric
@@ -732,12 +732,11 @@ namespace __detail
   /// @} group numeric_ops
 #endif // C++17
 
+#if __glibcxx_ranges_iota >= 202202L // C++ >= 23
 namespace ranges
 {
-#if __glibcxx_ranges_iota >= 202202L // C++ >= 23
-
   template<typename _Out, typename _Tp>
-  using iota_result = out_value_result<_Out, _Tp>;
+    using iota_result = out_value_result<_Out, _Tp>;
 
   struct __iota_fn
   {
@@ -762,9 +761,8 @@ namespace ranges
   };
 
   inline constexpr __iota_fn iota{};
-
-#endif // __glibcxx_ranges_iota
 } // namespace ranges
+#endif // __glibcxx_ranges_iota
 
 _GLIBCXX_END_NAMESPACE_VERSION
 } // namespace std
diff --git a/libstdc++-v3/testsuite/17_intro/names.cc 
b/libstdc++-v3/testsuite/17_intro/names.cc
index 4458325e52b..f67818db425 100644
--- a/libstdc++-v3/testsuite/17_intro/names.cc
+++ b/libstdc++-v3/testsuite/17_intro/names.cc
@@ -142,6 +142,10 @@
 #define try_emplace (
 #endif
 
+#if __cplusplus < 202002L
+#define ranges (
+#endif
+
 // These clash with newlib so don't use them.
 # define __lockable            cannot be used as an identifier
 # define __null_sentinel       cannot be used as an identifier
-- 
2.49.0

Reply via email to