aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2020-02-19 21:56:29 +0000
committerJonathan Wakely <jwakely@redhat.com>2020-02-19 22:11:27 +0000
commit1b425f3ac516f7250e9f7eac7cd4fe0908ccfa4e (patch)
tree321b3a9f62e348b0f4b194be90395d0771d1e1bb
parent7433536b3d864c0d8d5180348690e1c280a3eaf2 (diff)
downloadgcc-1b425f3ac516f7250e9f7eac7cd4fe0908ccfa4e.zip
gcc-1b425f3ac516f7250e9f7eac7cd4fe0908ccfa4e.tar.gz
gcc-1b425f3ac516f7250e9f7eac7cd4fe0908ccfa4e.tar.bz2
libstdc++: make common_iterator<I, S> require copyable<I> (LWG 3385)
* include/bits/stl_iterator.h (common_iterator): Add copyable<I> requirement (LWG 3385). * testsuite/24_iterators/headers/iterator/synopsis_c++20.cc: Adjust expected declaration.
-rw-r--r--libstdc++-v3/ChangeLog5
-rw-r--r--libstdc++-v3/include/bits/stl_iterator.h2
-rw-r--r--libstdc++-v3/testsuite/24_iterators/headers/iterator/synopsis_c++20.cc2
3 files changed, 7 insertions, 2 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index ef91b80..7f3f887 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,5 +1,10 @@
2020-02-19 Jonathan Wakely <jwakely@redhat.com>
+ * include/bits/stl_iterator.h (common_iterator): Add copyable<I>
+ requirement (LWG 3385).
+ * testsuite/24_iterators/headers/iterator/synopsis_c++20.cc: Adjust
+ expected declaration.
+
* include/std/ranges (take_while_view, drop_view, drop_while_view)
(elements_view:_Iterator): Initialize data members (LWG 3364).
diff --git a/libstdc++-v3/include/bits/stl_iterator.h b/libstdc++-v3/include/bits/stl_iterator.h
index fc9d442..372df22 100644
--- a/libstdc++-v3/include/bits/stl_iterator.h
+++ b/libstdc++-v3/include/bits/stl_iterator.h
@@ -1426,7 +1426,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
/// An iterator/sentinel adaptor for representing a non-common range.
template<input_or_output_iterator _It, sentinel_for<_It> _Sent>
- requires (!same_as<_It, _Sent>)
+ requires (!same_as<_It, _Sent>) && copyable<_It>
class common_iterator
{
template<typename _Tp, typename _Up>
diff --git a/libstdc++-v3/testsuite/24_iterators/headers/iterator/synopsis_c++20.cc b/libstdc++-v3/testsuite/24_iterators/headers/iterator/synopsis_c++20.cc
index 4d8eca3..fbe116b 100644
--- a/libstdc++-v3/testsuite/24_iterators/headers/iterator/synopsis_c++20.cc
+++ b/libstdc++-v3/testsuite/24_iterators/headers/iterator/synopsis_c++20.cc
@@ -56,7 +56,7 @@ namespace std
template<semiregular S> class move_sentinel;
template<input_or_output_iterator I, sentinel_for<I> S>
- requires (!same_as<I, S>)
+ requires (!same_as<I, S>) && copyable<I>
class common_iterator;
template<class I, class S>