[gcc r17-569] libstdc++: Include range_access.h from <valarray>
Tomasz Kaminski
tkaminsk@gcc.gnu.org
Mon May 18 15:42:01 GMT 2026
https://gcc.gnu.org/g:83f056802116d09136d2f32d1accfe5a53a85a74
commit r17-569-g83f056802116d09136d2f32d1accfe5a53a85a74
Author: Tomasz Kamiński <tkaminsk@redhat.com>
Date: Thu May 14 14:47:03 2026 +0200
libstdc++: Include range_access.h from <valarray>
This implements <valarray> related parts of section 4.8. of P3016R6.
This is treated as DR against C++11 (to expose array begin/end), to follow
similar changes to other semi-containers that were accepted as LWG issues
and treated as DR: <optional> (LWG4131), <stacktrace> (LWG3625).
libstdc++-v3/ChangeLog:
* include/std/valarray [__cplusplus >= 201103L]: Include
<bits/ranges_access.h>.
* testsuite/26_numerics/valarray/range_access2.cc: Remove
<iterator> include, and add test for std::size.
Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
Signed-off-by: Tomasz Kamiński <tkaminsk@redhat.com>
Diff:
---
libstdc++-v3/include/std/valarray | 1 +
.../testsuite/26_numerics/valarray/range_access2.cc | 14 +++++++++++++-
2 files changed, 14 insertions(+), 1 deletion(-)
diff --git a/libstdc++-v3/include/std/valarray b/libstdc++-v3/include/std/valarray
index 63784fb5974a..abb158d22c35 100644
--- a/libstdc++-v3/include/std/valarray
+++ b/libstdc++-v3/include/std/valarray
@@ -43,6 +43,7 @@
#include <debug/debug.h>
#if __cplusplus >= 201103L
#include <initializer_list>
+#include <bits/range_access.h>
#endif
namespace std _GLIBCXX_VISIBILITY(default)
diff --git a/libstdc++-v3/testsuite/26_numerics/valarray/range_access2.cc b/libstdc++-v3/testsuite/26_numerics/valarray/range_access2.cc
index 8a4f2b659e5a..44ea7fc4b601 100644
--- a/libstdc++-v3/testsuite/26_numerics/valarray/range_access2.cc
+++ b/libstdc++-v3/testsuite/26_numerics/valarray/range_access2.cc
@@ -19,7 +19,6 @@
// C++11 26.6.10 valarray range access: [valarray.range]
-#include <iterator>
#include <valarray>
// PR libstdc++/67374
@@ -46,8 +45,21 @@ test02()
(void) std::cend(cva);
}
+// P3016R6 4.8
+void
+test03()
+{
+#if __cplusplus >= 201703L
+ std::valarray<double> va;
+ (void) std::size(va);
+ const auto& cva = va;
+ (void) std::size(cva);
+#endif
+}
+
int main()
{
test01();
test02();
+ test03();
}
More information about the Libstdc++-cvs
mailing list