[libcxx-commits] [libcxx] [libc++] P3168R2 Give std::optional Range Support (PR #146491)
Yanzuo Liu via libcxx-commits
libcxx-commits at lists.llvm.org
Wed Jul 2 00:46:36 PDT 2025
================
@@ -976,6 +1120,29 @@ public:
}
# endif // _LIBCPP_STD_VER >= 23
+// P3168R2
+# if _LIBCPP_STD_VER >= 26
+
+ _LIBCPP_HIDE_FROM_ABI constexpr iterator begin() {
+ if (!this->has_value())
+ return end();
+ return iterator(__wrap_iter(static_cast<_Tp*>(this->__get())));
+ }
+
+ _LIBCPP_HIDE_FROM_ABI constexpr const_iterator begin() const {
+ if (!this->has_value())
+ return end();
+ return const_iterator(__wrap_iter(static_cast<const _Tp*>(this->__get())));
+ }
+
+ _LIBCPP_HIDE_FROM_ABI constexpr iterator end() { return iterator(__wrap_iter(static_cast<_Tp*>(nullptr))); }
+
+ _LIBCPP_HIDE_FROM_ABI constexpr const_iterator end() const {
+ return const_iterator(__wrap_iter(static_cast<const _Tp*>(nullptr)));
+ }
----------------
zwuis wrote:
Seems wrong after updating implementation of `operator++`.
https://github.com/llvm/llvm-project/pull/146491
More information about the libcxx-commits
mailing list