I interpret whiteflag's concern differently: it is hard to see that the benefit offered by your code exceeds the investment of effort in writing your code (or, for others) the investment in effort to use it effectively. That has nothing to do with compile-time overhead - it is a concern of programmer productivity.
That is a valid real-world concern.
That aside, one thing you need to take into account is that the standard containers provide const and non-const versions of begin(), rbegin(), end(), and rend(). Your code will not compile if the loop and body require non-const iterators from a non-const container.