aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Palka <ppalka@redhat.com>2023-03-09 13:37:29 -0500
committerPatrick Palka <ppalka@redhat.com>2023-03-09 13:37:29 -0500
commit065c93b89c5e97dcbfd79ee5172cf6800c286896 (patch)
tree660a06b0eb4dcd5031feb62929493e466884bc54
parent95827e1b9f7d5dd5a697bd60292e3876a7e8c15c (diff)
downloadgcc-065c93b89c5e97dcbfd79ee5172cf6800c286896.zip
gcc-065c93b89c5e97dcbfd79ee5172cf6800c286896.tar.gz
gcc-065c93b89c5e97dcbfd79ee5172cf6800c286896.tar.bz2
libstdc++: Implement LWG 3796 changes to repeat_/chunk_by_view [PR109024]
PR libstdc++/109024 libstdc++-v3/ChangeLog: * include/std/ranges (chunk_by_view::_M_pred): Remove DMI as per LWG 3796. (repeat_view::_M_pred): Likewise. * testsuite/std/ranges/adaptors/chunk_by/1.cc (test03): New test. * testsuite/std/ranges/repeat/1.cc (test05): New test.
-rw-r--r--libstdc++-v3/include/std/ranges4
-rw-r--r--libstdc++-v3/testsuite/std/ranges/adaptors/chunk_by/1.cc8
-rw-r--r--libstdc++-v3/testsuite/std/ranges/repeat/1.cc8
3 files changed, 18 insertions, 2 deletions
diff --git a/libstdc++-v3/include/std/ranges b/libstdc++-v3/include/std/ranges
index 867844e..f680941 100644
--- a/libstdc++-v3/include/std/ranges
+++ b/libstdc++-v3/include/std/ranges
@@ -6735,7 +6735,7 @@ namespace views::__adaptor
class chunk_by_view : public view_interface<chunk_by_view<_Vp, _Pred>>
{
_Vp _M_base = _Vp();
- __detail::__box<_Pred> _M_pred = _Pred();
+ __detail::__box<_Pred> _M_pred;
__detail::_CachedPosition<_Vp> _M_cached_begin;
constexpr iterator_t<_Vp>
@@ -7411,7 +7411,7 @@ namespace views::__adaptor
&& (__detail::__is_integer_like<_Bound> || same_as<_Bound, unreachable_sentinel_t>))
class repeat_view : public view_interface<repeat_view<_Tp, _Bound>>
{
- __detail::__box<_Tp> _M_value = _Tp();
+ __detail::__box<_Tp> _M_value;
[[no_unique_address]] _Bound _M_bound = _Bound();
struct _Iterator;
diff --git a/libstdc++-v3/testsuite/std/ranges/adaptors/chunk_by/1.cc b/libstdc++-v3/testsuite/std/ranges/adaptors/chunk_by/1.cc
index cba6fad..f165c7d 100644
--- a/libstdc++-v3/testsuite/std/ranges/adaptors/chunk_by/1.cc
+++ b/libstdc++-v3/testsuite/std/ranges/adaptors/chunk_by/1.cc
@@ -54,9 +54,17 @@ test02()
VERIFY( i == v.end() );
}
+void
+test03()
+{
+ // LWG 3796
+ ranges::chunk_by_view<ranges::empty_view<int>, ranges::equal_to> r;
+}
+
int
main()
{
static_assert(test01());
test02();
+ test03();
}
diff --git a/libstdc++-v3/testsuite/std/ranges/repeat/1.cc b/libstdc++-v3/testsuite/std/ranges/repeat/1.cc
index 2f3ad45..07b7089 100644
--- a/libstdc++-v3/testsuite/std/ranges/repeat/1.cc
+++ b/libstdc++-v3/testsuite/std/ranges/repeat/1.cc
@@ -120,6 +120,13 @@ test04()
return true;
}
+void
+test05()
+{
+ // LWG 3796
+ ranges::repeat_view<int> r;
+}
+
int
main()
{
@@ -127,4 +134,5 @@ main()
static_assert(test02());
static_assert(test03());
static_assert(test04());
+ test05();
}