title: Does the C++ standard require operator != must be provided for a given iterator type?
body: <p>The C++17 standard <code>27.2.1.8</code> says:</p>
  
  <blockquote>
    <p>An iterator j is called reachable from an iterator i if and only if
    there is a finite sequence of applications of the expression ++i that
    makes i == j.</p>
  </blockquote>
  
  <p>That is to say, any conforming iterator type must provide <code>operator ==</code>. </p>
  
  <p>However, I find nothing about <code>operator !=</code> is a requirement for iterator types.</p>
  
  <p><strong>Does the C++ standard require <code>operator !=</code> must be provided for a given iterator type?</strong></p>