[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