title: Why QVector<TYPE*>::contains expects pointer to non-const TYPE as its parameter?
body: <p>I'm using QVector to hold pointers to Objects, say FYPE*, in my program.</p>
  
  <pre><code>    class TYPE {
          // ....
      };
      const TYPE *ptrToCst;
      QVector&lt;TYPE*&gt; qtVct;
      // ...
      if (qtVct.contains(ptrToCst)) { // Error!!!
          // ....
      }
  </code></pre>
  
  <p>The compiler says QVector::contains expects TYPE* instead of const TYPE* as its parameter. A const_cast operation would solve this problem. But it doesn't make any sense to me, since the contains method should never change what the pointer points to. And the equivalent code using STL vector works as expected.</p>
  
  <pre><code>    std::vector&lt;TYPE*&gt;  stlVct;
      // ...
      if (std::find(stlVct.begin(), stlVct.end(), ptrToCst)) { // Ok
          // ...
      }
  </code></pre>
  
  <p>What's the reason for this difference? Did STL treat containers that hold pointers specially, so that std::find accept pointer to const object? I guess partial template specialization was involved?</p>