Answer
Passing begin()/end() from different containers, or in the wrong order, is a classic bug that ranges eliminate by taking a single range object. Range algorithms also support projections and are constrained by concepts, giving clearer error messages. The whole-range interface is harder to misuse.
std::ranges::find(v, target); // can't mismatch begin/endReal-world example A subtle bug from mixing two containers' iterators is impossible once code uses range algorithms.