[libcxx-commits] [libcxx] [libc++][ranges] LWG3618: Unnecessary `iter_move` for `transform_view::iterator` (PR #91809)
Xiaoyang Liu via libcxx-commits
libcxx-commits at lists.llvm.org
Fri May 10 14:03:28 PDT 2024
https://github.com/xiaoyang-sde created https://github.com/llvm/llvm-project/pull/91809
## Introduction
This patch implements LWG3618: Unnecessary `iter_move` for `transform_view::iterator`.
`transform_view`'s iterator currently specifies a customization point for `iter_move`. This customization point does the same thing that the default implementation would do, but its sole purpose is to ensure the appropriate conditional `noexcept` specification.
## Reference
- [[range.transform.iterator]](https://eel.is/c++draft/range.transform.iterator)
- [LWG3618](https://cplusplus.github.io/LWG/issue3618)
>From 78aa1452e8f5c8650b9ad645a0248758999f400b Mon Sep 17 00:00:00 2001
From: Xiaoyang Liu <siujoeng.lau at gmail.com>
Date: Fri, 10 May 2024 16:56:12 -0400
Subject: [PATCH] [libc++][ranges] LWG3618: Unnecessary 'iter_move' for
'transform_view::iterator'
---
libcxx/docs/Status/Cxx23Issues.csv | 2 +-
libcxx/include/__ranges/transform_view.h | 7 -------
2 files changed, 1 insertion(+), 8 deletions(-)
diff --git a/libcxx/docs/Status/Cxx23Issues.csv b/libcxx/docs/Status/Cxx23Issues.csv
index 04f6e23375acd..55db4d209a407 100644
--- a/libcxx/docs/Status/Cxx23Issues.csv
+++ b/libcxx/docs/Status/Cxx23Issues.csv
@@ -146,7 +146,7 @@
"`3610 <https://wg21.link/LWG3610>`__","``iota_view::size`` sometimes rejects integer-class types","February 2022","","","|ranges|"
"`3612 <https://wg21.link/LWG3612>`__","Inconsistent pointer alignment in ``std::format`` ","February 2022","|Complete|","14.0","|format|"
"`3616 <https://wg21.link/LWG3616>`__","LWG 3498 seems to miss the non-member ``swap`` for ``basic_syncbuf`` ","February 2022","",""
-"`3618 <https://wg21.link/LWG3618>`__","Unnecessary ``iter_move`` for ``transform_view::iterator`` ","February 2022","","","|ranges|"
+"`3618 <https://wg21.link/LWG3618>`__","Unnecessary ``iter_move`` for ``transform_view::iterator`` ","February 2022","|Complete|","19.0","|ranges|"
"`3619 <https://wg21.link/LWG3619>`__","Specification of ``vformat_to`` contains ill-formed ``formatted_size`` calls","February 2022","|Nothing to do|","","|format|"
"`3621 <https://wg21.link/LWG3621>`__","Remove feature-test macro ``__cpp_lib_monadic_optional`` ","February 2022","|Complete|","15.0"
"`3632 <https://wg21.link/LWG3632>`__","``unique_ptr`` ""Mandates: This constructor is not selected by class template argument deduction""","February 2022","|Nothing to do|",""
diff --git a/libcxx/include/__ranges/transform_view.h b/libcxx/include/__ranges/transform_view.h
index dc3aaa59ed8c3..bcce389c0e680 100644
--- a/libcxx/include/__ranges/transform_view.h
+++ b/libcxx/include/__ranges/transform_view.h
@@ -326,13 +326,6 @@ class transform_view<_View, _Fn>::__iterator : public __transform_view_iterator_
{
return __x.__current_ - __y.__current_;
}
-
- _LIBCPP_HIDE_FROM_ABI friend constexpr decltype(auto) iter_move(const __iterator& __i) noexcept(noexcept(*__i)) {
- if constexpr (is_lvalue_reference_v<decltype(*__i)>)
- return std::move(*__i);
- else
- return *__i;
- }
};
# if _LIBCPP_STD_VER >= 23
More information about the libcxx-commits
mailing list