[gcc r10-8866] libstdc++: Fix non-reserved names in headers

Jonathan Wakely redi@gcc.gnu.org
Thu Oct 8 00:36:09 GMT 2020


https://gcc.gnu.org/g:0fe0032699636a2c75ebca11f1c878f1dedde554

commit r10-8866-g0fe0032699636a2c75ebca11f1c878f1dedde554
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Thu Oct 8 00:05:53 2020 +0100

    libstdc++: Fix non-reserved names in headers
    
    Fix some bad uses of "ForwardIterator" in <ranges>.
    
    There's also a "il" parameter in a std::seed_seq constructor in <random>
    which is only reserved since C++14.
    
    libstdc++-v3/ChangeLog:
    
            * include/bits/random.h (seed_seq(initializer_list<T>)): Rename
            parameter to use reserved name.
            * include/bits/ranges_algo.h (shift_left, shift_right): Rename
            template parameters to use reserved name.
            * testsuite/17_intro/names.cc: Check "il". Do not check "d" and
            "y" in C++20 mode.
    
    (cherry picked from commit 23f75da95f5e8e09e9fcbd5b0d2885e6c44739aa)

Diff:
---
 libstdc++-v3/include/bits/random.h       |  2 +-
 libstdc++-v3/include/bits/ranges_algo.h  | 19 ++++++++++---------
 libstdc++-v3/testsuite/17_intro/names.cc | 13 +++++++++++--
 3 files changed, 22 insertions(+), 12 deletions(-)

diff --git a/libstdc++-v3/include/bits/random.h b/libstdc++-v3/include/bits/random.h
index 19307fbc3ca..4a6558c966a 100644
--- a/libstdc++-v3/include/bits/random.h
+++ b/libstdc++-v3/include/bits/random.h
@@ -6063,7 +6063,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     { }
 
     template<typename _IntType>
-      seed_seq(std::initializer_list<_IntType> il);
+      seed_seq(std::initializer_list<_IntType> __il);
 
     template<typename _InputIterator>
       seed_seq(_InputIterator __begin, _InputIterator __end);
diff --git a/libstdc++-v3/include/bits/ranges_algo.h b/libstdc++-v3/include/bits/ranges_algo.h
index 33c6778db47..4d4f7401615 100644
--- a/libstdc++-v3/include/bits/ranges_algo.h
+++ b/libstdc++-v3/include/bits/ranges_algo.h
@@ -3693,10 +3693,10 @@ namespace ranges
 } // namespace ranges
 
 #define __cpp_lib_shift 201806L
-  template<class ForwardIterator>
-    constexpr ForwardIterator
-    shift_left(ForwardIterator __first, ForwardIterator __last,
-	       typename iterator_traits<ForwardIterator>::difference_type __n)
+  template<typename _ForwardIterator>
+    constexpr _ForwardIterator
+    shift_left(_ForwardIterator __first, _ForwardIterator __last,
+	       typename iterator_traits<_ForwardIterator>::difference_type __n)
     {
       __glibcxx_assert(__n >= 0);
       if (__n == 0)
@@ -3708,16 +3708,17 @@ namespace ranges
       return std::move(std::move(__mid), std::move(__last), std::move(__first));
     }
 
-  template<class ForwardIterator>
-    constexpr ForwardIterator
-    shift_right(ForwardIterator __first, ForwardIterator __last,
-		typename iterator_traits<ForwardIterator>::difference_type __n)
+  template<typename _ForwardIterator>
+    constexpr _ForwardIterator
+    shift_right(_ForwardIterator __first, _ForwardIterator __last,
+		typename iterator_traits<_ForwardIterator>::difference_type __n)
     {
       __glibcxx_assert(__n >= 0);
       if (__n == 0)
 	return __first;
 
-      using _Cat = typename iterator_traits<ForwardIterator>::iterator_category;
+      using _Cat
+	= typename iterator_traits<_ForwardIterator>::iterator_category;
       if constexpr (derived_from<_Cat, bidirectional_iterator_tag>)
 	{
 	  auto __mid = ranges::next(__last, -__n, __first);
diff --git a/libstdc++-v3/testsuite/17_intro/names.cc b/libstdc++-v3/testsuite/17_intro/names.cc
index 2b6c3eb017d..5a61c97e989 100644
--- a/libstdc++-v3/testsuite/17_intro/names.cc
+++ b/libstdc++-v3/testsuite/17_intro/names.cc
@@ -52,9 +52,10 @@
 #define b (
 #endif
 // <queue> and <stack> defined data members called c
-#define d (
 #if __cplusplus <= 201703L
-// <numbers> defines std::numbers::e
+// <chrono> defines operator""d in C++20
+#define d (
+// <numbers> defines std::numbers::e in C++20
 #define e (
 #endif
 #define f (
@@ -98,7 +99,10 @@
 #define v (
 #define w (
 #define x (
+#if __cplusplus <= 201703L
+// <chrono> defines operator""y in C++20
 #define y (
+#endif
 #define z (
 
 #define tmp (
@@ -107,6 +111,11 @@
 #define uses_allocator  (
 #endif
 
+#if __cplusplus < 201402L
+// <complex> defines operator""il
+#define il  (
+#endif
+
 #if __cplusplus < 201703L
 // <charconv> defines to_chars_result::ptr and to_chars_result::ec
 #define ec (


More information about the Libstdc++-cvs mailing list