diff --git a/include/__bit_reference b/include/__bit_reference index 37b792371..d9ebfbe5e 100644 --- a/include/__bit_reference +++ b/include/__bit_reference @@ -174,7 +174,7 @@ __find_bool_true(__bit_iterator<_Cp, _IsConst> __first, typename _Cp::size_type if (__b) return _It(__first.__seg_, static_cast(_VSTD::__ctz(__b))); if (__n == __dn) - return _It(__first.__seg_, __first.__ctz_ + __n); + return __first + __n; __n -= __dn; ++__first.__seg_; } @@ -210,7 +210,7 @@ __find_bool_false(__bit_iterator<_Cp, _IsConst> __first, typename _Cp::size_type if (__b) return _It(__first.__seg_, static_cast(_VSTD::__ctz(__b))); if (__n == __dn) - return _It(__first.__seg_, __first.__ctz_ + __n); + return __first + __n; __n -= __dn; ++__first.__seg_; } diff --git a/test/containers/sequences/vector.bool/find.pass.cpp b/test/containers/sequences/vector.bool/find.pass.cpp index 8bad87eff..75567a9b7 100644 --- a/test/containers/sequences/vector.bool/find.pass.cpp +++ b/test/containers/sequences/vector.bool/find.pass.cpp @@ -25,6 +25,7 @@ int main() std::vector b(i,true); std::vector::iterator j = std::find(b.begin()+1, b.end(), false); assert(j-b.begin() == i); + assert(b.end() == j); } } { @@ -33,6 +34,7 @@ int main() std::vector b(i,false); std::vector::iterator j = std::find(b.begin()+1, b.end(), true); assert(j-b.begin() == i); + assert(b.end() == j); } } }