soft_ptr_range<> and naked_ptr_range<> are intended to be used when implementing vector-like collections.
it is similar to soft_ptr<> / naked_ptr<> - but additionally tells the end of the valid range; it allows to implement safe increment/decrement operations for it.
MUST NOT be used outside of collection implementations.