[libcxx-commits] [PATCH] D123851: [libc++] Change vector<bool>::const_iterator::reference to bool in ABIv2
Nikolas Klauser via Phabricator via libcxx-commits
libcxx-commits at lists.llvm.org
Sat Apr 16 13:49:59 PDT 2022
philnik updated this revision to Diff 423262.
philnik added a comment.
- Try to fix CI
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D123851/new/
https://reviews.llvm.org/D123851
Files:
libcxx/include/__bit_reference
libcxx/test/std/containers/sequences/vector.bool/iterators.pass.cpp
Index: libcxx/test/std/containers/sequences/vector.bool/iterators.pass.cpp
===================================================================
--- libcxx/test/std/containers/sequences/vector.bool/iterators.pass.cpp
+++ libcxx/test/std/containers/sequences/vector.bool/iterators.pass.cpp
@@ -24,6 +24,15 @@
int main(int, char**)
{
+ using IterRefT = std::iterator_traits<std::vector<bool>::iterator>::reference;
+ ASSERT_SAME_TYPE(IterRefT, std::vector<bool>::reference);
+
+ using ConstIterRefT = std::iterator_traits<std::vector<bool>::const_iterator>::reference;
+#if !defined(_LIBCPP_VERSION) || defined(_LIBCPP_ABI_BITSET_VECTOR_BOOL_CONST_SUBSCRIPT_RETURN_BOOL)
+ ASSERT_SAME_TYPE(ConstIterRefT, bool);
+#else
+ ASSERT_SAME_TYPE(ConstIterRefT, std::__bit_const_reference<std::vector<bool> >);
+#endif
{
typedef bool T;
typedef std::vector<T> C;
Index: libcxx/include/__bit_reference
===================================================================
--- libcxx/include/__bit_reference
+++ libcxx/include/__bit_reference
@@ -1109,7 +1109,11 @@
typedef typename _Cp::difference_type difference_type;
typedef bool value_type;
typedef __bit_iterator pointer;
+#ifndef _LIBCPP_ABI_BITSET_VECTOR_BOOL_CONST_SUBSCRIPT_RETURN_BOOL
typedef typename conditional<_IsConst, __bit_const_reference<_Cp>, __bit_reference<_Cp> >::type reference;
+#else
+ using reference = typename conditional<_IsConst, bool, __bit_reference<_Cp>>::type;
+#endif
typedef random_access_iterator_tag iterator_category;
private:
@@ -1149,8 +1153,10 @@
return *this;
}
- _LIBCPP_INLINE_VISIBILITY reference operator*() const _NOEXCEPT
- {return reference(__seg_, __storage_type(1) << __ctz_);}
+ _LIBCPP_INLINE_VISIBILITY reference operator*() const _NOEXCEPT {
+ return typename conditional<_IsConst, __bit_const_reference<_Cp>, __bit_reference<_Cp> >
+ ::type(__seg_, __storage_type(1) << __ctz_);
+ }
_LIBCPP_INLINE_VISIBILITY __bit_iterator& operator++()
{
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D123851.423262.patch
Type: text/x-patch
Size: 2338 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/libcxx-commits/attachments/20220416/859d7612/attachment.bin>
More information about the libcxx-commits
mailing list