From 8c98ce4dfa7966db48ca22ae6b2a9b6c3cc69648 Mon Sep 17 00:00:00 2001 From: Arthur O'Dwyer Date: Wed, 19 Jan 2022 07:29:05 -0500 Subject: [PATCH] [libc++] Fix a typo in reverse_iterator::operator=. We should be checking `is_assignable`. `is_assignable` checks for an rvalue left-hand side, which is basically never assignable-to. Found while looking into https://cplusplus.github.io/LWG/issue3435 . Differential Revision: https://reviews.llvm.org/D117660 --- libcxx/include/__iterator/reverse_iterator.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libcxx/include/__iterator/reverse_iterator.h b/libcxx/include/__iterator/reverse_iterator.h index 454054534e55ea..449eb529aa9830 100644 --- a/libcxx/include/__iterator/reverse_iterator.h +++ b/libcxx/include/__iterator/reverse_iterator.h @@ -77,7 +77,7 @@ _LIBCPP_SUPPRESS_DEPRECATED_POP template ::value && is_convertible<_Up const&, _Iter>::value && - is_assignable<_Iter, _Up const&>::value + is_assignable<_Iter&, _Up const&>::value > > _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14 reverse_iterator& operator=(const reverse_iterator<_Up>& __u) { @@ -102,7 +102,7 @@ _LIBCPP_SUPPRESS_DEPRECATED_POP template ::value && is_convertible<_Up const&, _Iter>::value && - is_assignable<_Iter, _Up const&>::value + is_assignable<_Iter&, _Up const&>::value > > _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14 reverse_iterator& operator=(const reverse_iterator<_Up>& __u) {