Looking pretty good, just a few comments.
Nit: move __func as well?
Please update the synopsis as well.
Please add the synopsis.
Please also check the indirectly_unary_invocable constraint.
Please also check with an empty range.
Can you also check that it works when the functor is move-only (since the standard mandates that for_each_result should initialize the functor by moving)?