title: New iterator requirements
body: <p>I noticed that most if not all containers now require their <code>::iterator</code> type to satisfy <code>LegacySomethingIterator</code> instead of <code>SomethingIterator</code>. </p>
  
  <p>For example, <code>std::vector&lt;&gt;::iterator</code> <a href="https://en.cppreference.com/w/cpp/container/vector" rel="noreferrer">now requires</a>:</p>
  
  <blockquote>
    <p><code>iterator</code>    <a href="https://en.cppreference.com/w/cpp/named_req/RandomAccessIterator" rel="noreferrer"><em>LegacyRandomAccessIterator</em></a></p>
  </blockquote>
  
  <p>This seems to be the same for most of the other containers, all requiring their iterators to go from <code>SomethingIterator</code> to <code>LegacySomethingIterator</code>.</p>
  
  <p>There are also the "new" requirements that took the names of the old requirements, such as <a href="https://en.cppreference.com/w/cpp/experimental/ranges/iterator/RandomAccessIterator" rel="noreferrer"><code>RandomAccessIterator</code></a>, why were these added? It seems to me that the new variants just shadow the legacy variants, no differences.</p>
  
  <p>Why were new ones created in the first place, their requirements look the same to me. Why don't the new ones just replace the old requirements instead of right now having 2 different names for them (e.g. <code>RandomAccessIterator</code> and <code>LegacyRandomAccessIterator</code>)?</p>