https://gcc.gnu.org/g:83f056802116d09136d2f32d1accfe5a53a85a74
commit r17-569-g83f056802116d09136d2f32d1accfe5a53a85a74 Author: Tomasz Kamiński <[email protected]> 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 <[email protected]> Signed-off-by: Tomasz Kamiński <[email protected]> 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(); }
