title: next iterator after end() in std::list
body: <pre><code>#include &lt;iostream&gt;
  #include &lt;list&gt;
  #include &lt;deque&gt;
  int main( void )
  {
      std::deque&lt; std::deque&lt; int &gt; &gt; integers_lists ;
      const std::list&lt; int &gt; list0 { 1 , 2 , 3 } ;
      for ( auto current = std::next( list0.cbegin() ) 
            ; current != std::next( list0.cend() ) 
            ; ++ current ) integers_lists.emplace_back( list0.cbegin() , current ) ;
      for ( const auto&amp; sub : integers_lists )
      {
          for ( auto each : sub ) std::cout &lt;&lt; each &lt;&lt; " " ;
          std::cout &lt;&lt; "\n" ;
      }
      return 0;
  }
  </code></pre>
  
  <p>does STL guarantee the correctness of <code>current != std::next( list0.cend() )</code> expression in this case.? 
  and where exactly that's pointed in Standard.?                  </p>