Preparation for std::iterator Being Deprecated
<p>On March 21<sup>st</sup> the standards committee voted to approve the deprecation of <a href="http://en.cppreference.com/w/cpp/iterator/iterator" rel="noreferrer"><code>std::iterator</code></a> proposed in <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0174r1.html#2.1" rel="noreferrer">P0174</a>:</p>

<blockquote>
  <p>The long sequence of void arguments is much less clear to the reader than simply providing the expected <code>typedef</code>s in the class definition itself, which is the approach taken by the current working draft, following the pattern set in <a href="/questions/tagged/c%2b%2b14" class="post-tag" title="show questions tagged &#39;c++14&#39;" rel="tag">c++14</a></p>
</blockquote>

<p>Before <a href="/questions/tagged/c%2b%2b17" class="post-tag" title="show questions tagged &#39;c++17&#39;" rel="tag">c++17</a> inheritance from <code>std::iterator</code> was encouraged to remove the tedium from iterator boilerplate implementation. But the deprecation will require one of these things:</p>

<ol>
<li>An iterator boilerplate will now need to include all required <code>typedef</code>s</li>
<li>Algorithms working with iterators will now need to use <code>auto</code> rather than depending upon the iterator to declare types</li>
<li><a href="https://stackoverflow.com/questions/37029541/inheriting-from-iterator?noredirect=1#comment61610944_37029541">Loki Astari has suggested</a> that <a href="http://en.cppreference.com/w/cpp/iterator/iterator_traits" rel="noreferrer"><code>std::iterator_traits</code></a> may be updated to work without inheriting from <code>std::iterator</code></li>
</ol>

<p>Can someone enlighten me on which of these options I should expect, as I design custom iterators with an eye towards <a href="/questions/tagged/c%2b%2b17" class="post-tag" title="show questions tagged &#39;c++17&#39;" rel="tag">c++17</a> compatibility?</p>