From: Tomasz Kamiński Date: Thu, 9 Apr 2026 12:34:35 +0000 (+0200) Subject: libstdc++: Rename views::to_input to views::as_input. X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=HEAD;p=thirdparty%2Fgcc.git 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 Signed-off-by: Tomasz Kamiński --- 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 @@ -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 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 @@ -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 requires view<_Vp> - class to_input_view : public view_interface> + class as_input_view : public view_interface> { _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 - to_input_view(_Range&&) -> to_input_view>; + as_input_view(_Range&&) -> as_input_view>; template requires view<_Vp> template - 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; public: @@ -10680,13 +10680,13 @@ namespace ranges namespace __detail { template - 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 - 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; - 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; + 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 -#if __cpp_lib_ranges_to_input != 202502L -# error "Feature-test macro __cpp_lib_ranges_to_input has wrong value in " +#if __cpp_lib_ranges_as_input != 202502L +# error "Feature-test macro __cpp_lib_ranges_as_input has wrong value in " #endif #include @@ -18,7 +18,7 @@ void test01() { std::vector 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 && !ranges::forward_range ); @@ -45,10 +45,10 @@ test02() int x[] = {1,2,3}; __gnu_test::test_input_range rx(x); static_assert( !ranges::common_range ); - auto v = rx | views::to_input; + auto v = rx | views::as_input; static_assert( std::same_as ); - static_assert( std::same_as ); + static_assert( std::same_as ); } int