title: May a random access iterator to end be incremented by zero?
body: <p>The title says it all really. Given an iterator to end, may it be incremented by zero without invoking undefined behavior?</p>
  
  <p>Case in point - does the following code work to return an iterator to the specified index - or to <code>end</code> if the index is out of range?</p>
  
  <pre><code>std::vector&lt;Type&gt;::iterator Class::fromIndex(size_t index) {
      return member_vector.begin() + std::min(index, member_vector.size());
  }
  </code></pre>
  
  <p>If the behavior for <code>std::advance</code> or <code>std::next</code> are different that would be interesting to know as well, but here I am interested specifically in <code>operator+</code>.</p>