[gcc r16-8557] libstdc++: Rename views::to_input to views::as_input.

Tomasz Kaminski tkaminsk@gcc.gnu.org
Fri Apr 10 06:08:59 GMT 2026


https://gcc.gnu.org/g:30e3fa619177674d94689d11e4bf67a158e69869

commit r16-8557-g30e3fa619177674d94689d11e4bf67a158e69869
Author: Tomasz Kamiński <tkaminsk@redhat.com>
Date:   Thu Apr 9 14:34:35 2026 +0200

    libstdc++: Rename views::to_input to views::as_input.
    
    This patch implements P3828R1: Rename the to_input view to as_input.
    
    The paper suggest renaming the feature test macro without changing the
    value and this patch follows.
    
    libstdc++-v3/ChangeLog:
    
            * include/bits/version.def (ranges_to_input): Rename to...
            (ranges_as_input): Rename from ranges_as_input.
            * include/bits/version.h: Regenerate.
            * include/std/ranges (ranges::to_input_view, views::to_input)
            (__detail::__can_to_input, views::_ToInput): Rename to...
            (ranges::as_input_view, views::as_input, __detail::__can_as_input)
            (views::_AsInput): Rename from above...
            * src/c++23/std.cc.in: Rename views::to_input and to_input_view
            export.
            * testsuite/25_algorithms/contains/1.cc: Replace views::to_input
            with views::as_input.
            * testsuite/std/ranges/adaptors/to_input/1.cc: Move to...
            * testsuite/std/ranges/adaptors/as_input/1.cc: ...here, and replace
            views::to_input with views::as_input.
    
    gcc/testsuite/ChangeLog:
    
            * g++.dg/reflect/range_args.C: Replace views::to_input with
            views::as_input.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kamiński <tkaminsk@redhat.com>

Diff:
---
 gcc/testsuite/g++.dg/reflect/range_args.C          |  6 ++---
 libstdc++-v3/include/bits/version.def              |  2 +-
 libstdc++-v3/include/bits/version.h                | 12 +++++-----
 libstdc++-v3/include/std/ranges                    | 28 +++++++++++-----------
 libstdc++-v3/src/c++23/std.cc.in                   |  6 ++---
 libstdc++-v3/testsuite/25_algorithms/contains/1.cc | 18 +++++++-------
 .../ranges/adaptors/{to_input => as_input}/1.cc    | 12 +++++-----
 7 files changed, 42 insertions(+), 42 deletions(-)

diff --git a/gcc/testsuite/g++.dg/reflect/range_args.C b/gcc/testsuite/g++.dg/reflect/range_args.C
index fa06cf0ebc7e..df9b5e42359f 100644
--- a/gcc/testsuite/g++.dg/reflect/range_args.C
+++ b/gcc/testsuite/g++.dg/reflect/range_args.C
@@ -45,7 +45,7 @@ test_type_range(Rg&& rg)
 constexpr info vt[] = {^^int, ^^int, ^^float, ^^int, ^^float, ^^double};
 static_assert (test_type_range (vt | std::views::filter (is_integral_type))); // bidirectional
 static_assert (test_type_range (vt | std::views::take_while (is_integral_type))); // non-common
-static_assert (test_type_range (vt | std::views::to_input)); // input
+static_assert (test_type_range (vt | std::views::as_input)); // input
 static_assert (test_type_range (vt | std::views::cache_latest)); // input, move-only
 
 template<typename Rg>
@@ -74,7 +74,7 @@ constexpr bool not_digit(char c) {
 
 static_assert (test_value_range (vv | std::views::filter (not_digit))); // bidirectional
 static_assert (test_value_range (vv | std::views::take_while (not_digit))); // non-common
-static_assert (test_value_range (vv | std::views::to_input)); // input
+static_assert (test_value_range (vv | std::views::as_input)); // input
 static_assert (test_value_range (vv | std::views::cache_latest)); // input, move-only
 								 
 template<int> struct Aggr;
@@ -91,6 +91,6 @@ consteval bool of_int_type(info dm) {
 consteval {
   define_aggregate (^^Aggr<0>, dmt | std::views::filter (of_int_type)); // bidirectional
   define_aggregate (^^Aggr<1>, dmt | std::views::take_while (of_int_type)); // non-common
-  define_aggregate (^^Aggr<2>, dmt | std::views::to_input); // input
+  define_aggregate (^^Aggr<2>, dmt | std::views::as_input); // input
   define_aggregate (^^Aggr<3>, dmt | std::views::cache_latest); // input, move-only
 }
diff --git a/libstdc++-v3/include/bits/version.def b/libstdc++-v3/include/bits/version.def
index 059c38c6c13d..0142251ef936 100644
--- a/libstdc++-v3/include/bits/version.def
+++ b/libstdc++-v3/include/bits/version.def
@@ -2191,7 +2191,7 @@ ftms = {
 };
 
 ftms = {
-  name = ranges_to_input;
+  name = ranges_as_input;
   values = {
     v = 202502;
     cxxmin = 26;
diff --git a/libstdc++-v3/include/bits/version.h b/libstdc++-v3/include/bits/version.h
index f806e8f3f9c0..cf78137c9d1a 100644
--- a/libstdc++-v3/include/bits/version.h
+++ b/libstdc++-v3/include/bits/version.h
@@ -2446,15 +2446,15 @@
 #endif /* !defined(__cpp_lib_ranges_filter) */
 #undef __glibcxx_want_ranges_filter
 
-#if !defined(__cpp_lib_ranges_to_input)
+#if !defined(__cpp_lib_ranges_as_input)
 # if (__cplusplus >  202302L)
-#  define __glibcxx_ranges_to_input 202502L
-#  if defined(__glibcxx_want_all) || defined(__glibcxx_want_ranges_to_input)
-#   define __cpp_lib_ranges_to_input 202502L
+#  define __glibcxx_ranges_as_input 202502L
+#  if defined(__glibcxx_want_all) || defined(__glibcxx_want_ranges_as_input)
+#   define __cpp_lib_ranges_as_input 202502L
 #  endif
 # endif
-#endif /* !defined(__cpp_lib_ranges_to_input) */
-#undef __glibcxx_want_ranges_to_input
+#endif /* !defined(__cpp_lib_ranges_as_input) */
+#undef __glibcxx_want_ranges_as_input
 
 #if !defined(__cpp_lib_to_string)
 # if (__cplusplus >  202302L) && _GLIBCXX_HOSTED && (__glibcxx_to_chars)
diff --git a/libstdc++-v3/include/std/ranges b/libstdc++-v3/include/std/ranges
index 0aa4191e04f6..ca91e081ad4d 100644
--- a/libstdc++-v3/include/std/ranges
+++ b/libstdc++-v3/include/std/ranges
@@ -72,7 +72,7 @@
 #define __glibcxx_want_ranges_slide
 #define __glibcxx_want_ranges_stride
 #define __glibcxx_want_ranges_to_container
-#define __glibcxx_want_ranges_to_input
+#define __glibcxx_want_ranges_as_input
 #define __glibcxx_want_ranges_zip
 #include <bits/version.h>
 
@@ -10537,12 +10537,12 @@ namespace ranges
 } // namespace ranges
 #endif // __cpp_lib_ranges_cache_latest
 
-#if __cpp_lib_ranges_to_input // C++ >= 26
+#if __cpp_lib_ranges_as_input // C++ >= 26
 namespace ranges
 {
   template<input_range _Vp>
     requires view<_Vp>
-  class to_input_view : public view_interface<to_input_view<_Vp>>
+  class as_input_view : public view_interface<as_input_view<_Vp>>
   {
     _Vp _M_base = _Vp();
 
@@ -10550,10 +10550,10 @@ namespace ranges
     class _Iterator;
 
   public:
-    to_input_view() requires default_initializable<_Vp> = default;
+    as_input_view() requires default_initializable<_Vp> = default;
 
     constexpr explicit
-    to_input_view(_Vp __base)
+    as_input_view(_Vp __base)
     : _M_base(std::move(__base))
     { }
 
@@ -10591,12 +10591,12 @@ namespace ranges
   };
 
   template<typename _Range>
-    to_input_view(_Range&&) -> to_input_view<views::all_t<_Range>>;
+    as_input_view(_Range&&) -> as_input_view<views::all_t<_Range>>;
 
   template<input_range _Vp>
     requires view<_Vp>
   template<bool _Const>
-  class to_input_view<_Vp>::_Iterator
+  class as_input_view<_Vp>::_Iterator
   {
     using _Base = __maybe_const_t<_Const, _Vp>;
 
@@ -10607,7 +10607,7 @@ namespace ranges
     : _M_current(std::move(__current))
     { }
 
-    friend to_input_view;
+    friend as_input_view;
     friend _Iterator<!_Const>;
 
   public:
@@ -10680,13 +10680,13 @@ namespace ranges
     namespace __detail
     {
       template<typename _Tp>
-	concept __can_to_input = requires { to_input_view(std::declval<_Tp>()); };
+	concept __can_as_input = requires { as_input_view(std::declval<_Tp>()); };
     }
 
-    struct _ToInput : __adaptor::_RangeAdaptorClosure<_ToInput>
+    struct _AsInput : __adaptor::_RangeAdaptorClosure<_AsInput>
     {
       template<viewable_range _Range>
-	requires __detail::__can_to_input<_Range>
+	requires __detail::__can_as_input<_Range>
 	constexpr auto
 	operator() [[nodiscard]] (_Range&& __r) const
 	{
@@ -10695,16 +10695,16 @@ namespace ranges
 			&& !forward_range<_Range>)
 	    return views::all(std::forward<_Range>(__r));
 	  else
-	    return to_input_view(std::forward<_Range>(__r));
+	    return as_input_view(std::forward<_Range>(__r));
 	}
 
       static constexpr bool _S_has_simple_call_op = true;
     };
 
-    inline constexpr _ToInput to_input;
+    inline constexpr _AsInput as_input;
   }
 } // namespace ranges
-#endif // __cpp_lib_ranges_to_input
+#endif // __cpp_lib_ranges_as_input
 
 _GLIBCXX_END_NAMESPACE_VERSION
 } // namespace std
diff --git a/libstdc++-v3/src/c++23/std.cc.in b/libstdc++-v3/src/c++23/std.cc.in
index 3ac198716924..ad249cb3348e 100644
--- a/libstdc++-v3/src/c++23/std.cc.in
+++ b/libstdc++-v3/src/c++23/std.cc.in
@@ -2800,9 +2800,9 @@ export namespace std
     using ranges::cache_latest_view;
     namespace views { using views::cache_latest; }
 #endif
-#if __glibcxx_ranges_to_input // C++ >= 26
-    using ranges::to_input_view;
-    namespace views { using views::to_input; }
+#if __glibcxx_ranges_as_input // C++ >= 26
+    using ranges::as_input_view;
+    namespace views { using views::as_input; }
 #endif
 #ifdef __cpp_lib_ranges_indices // C++ >= 26
     namespace views { using views::indices; }
diff --git a/libstdc++-v3/testsuite/25_algorithms/contains/1.cc b/libstdc++-v3/testsuite/25_algorithms/contains/1.cc
index b44c06032e8a..aaf81f85a0a6 100644
--- a/libstdc++-v3/testsuite/25_algorithms/contains/1.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/contains/1.cc
@@ -14,17 +14,17 @@ void
 test01()
 {
   int x[] = {1,2,3};
-  using to_input = __gnu_test::test_input_range<int>;
-  VERIFY( ranges::contains(to_input(x), 1) );
-  VERIFY( ranges::contains(to_input(x), 2) );
-  VERIFY( ranges::contains(to_input(x), 3) );
-  VERIFY( !ranges::contains(to_input(x), 4) );
+  using as_input = __gnu_test::test_input_range<int>;
+  VERIFY( ranges::contains(as_input(x), 1) );
+  VERIFY( ranges::contains(as_input(x), 2) );
+  VERIFY( ranges::contains(as_input(x), 3) );
+  VERIFY( !ranges::contains(as_input(x), 4) );
   VERIFY( !ranges::contains(x, x+2, 3) );
   auto neg = [](int n) { return -n; };
-  VERIFY( ranges::contains(to_input(x), -1, neg) );
-  VERIFY( ranges::contains(to_input(x), -2, neg) );
-  VERIFY( ranges::contains(to_input(x), -3, neg) );
-  VERIFY( !ranges::contains(to_input(x), -4, neg) );
+  VERIFY( ranges::contains(as_input(x), -1, neg) );
+  VERIFY( ranges::contains(as_input(x), -2, neg) );
+  VERIFY( ranges::contains(as_input(x), -3, neg) );
+  VERIFY( !ranges::contains(as_input(x), -4, neg) );
 
   VERIFY( !ranges::contains(x, x+2, -3, neg) );
 }
diff --git a/libstdc++-v3/testsuite/std/ranges/adaptors/to_input/1.cc b/libstdc++-v3/testsuite/std/ranges/adaptors/as_input/1.cc
similarity index 78%
rename from libstdc++-v3/testsuite/std/ranges/adaptors/to_input/1.cc
rename to libstdc++-v3/testsuite/std/ranges/adaptors/as_input/1.cc
index cde368a2f64d..8bd1a82a7b7f 100644
--- a/libstdc++-v3/testsuite/std/ranges/adaptors/to_input/1.cc
+++ b/libstdc++-v3/testsuite/std/ranges/adaptors/as_input/1.cc
@@ -2,8 +2,8 @@
 
 #include <ranges>
 
-#if __cpp_lib_ranges_to_input != 202502L
-# error "Feature-test macro __cpp_lib_ranges_to_input has wrong value in <ranges>"
+#if __cpp_lib_ranges_as_input != 202502L
+# error "Feature-test macro __cpp_lib_ranges_as_input has wrong value in <ranges>"
 #endif
 
 #include <algorithm>
@@ -18,7 +18,7 @@ void
 test01()
 {
   std::vector<int> r{1,2,3};
-  auto v = r | views::to_input;
+  auto v = r | views::as_input;
   using type = decltype(v);
   static_assert( ranges::input_range<type> && !ranges::forward_range<type> );
 
@@ -45,10 +45,10 @@ test02()
   int x[] = {1,2,3};
   __gnu_test::test_input_range<int> rx(x);
   static_assert( !ranges::common_range<decltype(rx)> );
-  auto v = rx | views::to_input;
+  auto v = rx | views::as_input;
   static_assert( std::same_as<decltype(v), decltype(views::all(rx))> );
-  static_assert( std::same_as<decltype(x | views::to_input),
-			      decltype(x | views::to_input | views::to_input)> );
+  static_assert( std::same_as<decltype(x | views::as_input),
+			      decltype(x | views::as_input | views::as_input)> );
 }
 
 int


More information about the Libstdc++-cvs mailing list