title: Unusual behaviour with std::list<myclass*>::iterator comparison
body: <p>I'm seeing some unusual behavior when I compare two iterators.</p>
  
  <pre><code>vector&lt;list&lt;MyClass*&gt;&gt;   vlWatchers(10);
  list&lt;MyClass*&gt;::iterator itCurrent, itEnd;
  
  for (int i(0); i &lt;= 9; ++i)
  {
      itCurrent = vlWatchers[i].begin();
      itEnd = vlWatchers[i].end();
      while (itCurrent != itEnd)
      {
          //code
      }
  }
  </code></pre>
  
  <p>will cause a liste iterators incompatible error on the while() line, and appears to happen when i = 0, although only some of the time.  </p>
  
  <p>Upon further investigation after the error is called, itEnd and itCurrent are both equal to 0xcdcdcdcd.  The weird part is when i step into the != compare operator, the "this" pointer BECOMES 0xcdcdcdcd. Shouldn't 0xcdcdcdcd be the <strong>value</strong> that's stored in the iterators, not the <strong>address</strong> of the iterators themselves?  or is there some sort of iterator black magic where the iterator both stores a value and IS the value? This is part of a larger project, but the error is repeatable.</p>
  
  <p>Thank you in advance for any help!</p>