concept | ranges::differenceable__concept_ = invocable<P&, iter_value_t<I>> && copy_constructible<uncvref_t<invoke_result_t<P&, iter_value_t<I>>>> && movable<uncvref_t<invoke_result_t<P&, iter_value_t<I>>>> && output_iterator<O, invoke_result_t<P&, iter_value_t<I>>> && invocable< BOp&, invoke_result_t< P&, iter_value_t<I>>, invoke_result_t<P&, iter_value_t<I>>> && output_iterator< O, invoke_result_t< BOp&, invoke_result_t<P&, iter_value_t<I>>, invoke_result_t<P&, iter_value_t<I>>>> |