thank you very much for your post. Please excuse me for the delay responding.
I am not too fond of reverse iterators using
-1 because the data type (as far as I can remember) is an unsigned int (std::size_t), and then subtracting 1 to an empty iterator would result in the maximum long value (https://stackoverflow.com/questions/7221409/is-unsigned-integer-subtraction-defined-behavior).
It would be nice to see the docs of your compiler to make sure the whole thing works.