diff --git a/libcxx/include/numeric b/libcxx/include/numeric --- a/libcxx/include/numeric +++ b/libcxx/include/numeric @@ -308,13 +308,12 @@ { if (__first != __last) { - _Tp __saved = __init; do { - __init = __b(__init, *__first); - *__result = __saved; - __saved = __init; + _Tp __tmp = __b(__init, *__first); + *__result = __init; ++__result; + __init = _VSTD::move(__tmp); } while (++__first != __last); } return __result;