title: Boost shared_ptr seems doesn't support operator ==
body: <p>Here is the that runs on the latest QT IDE under Windows 7 (boost.1.48)</p>
  
  <pre><code>class Employee {
  public:
      int Id;
  ...
  bool operator==(const Employee&amp; other) {
         qDebug() &lt;&lt; this-&gt;Id &lt;&lt; ":" &lt;&lt; "compare with " &lt;&lt; other.Id;
         return this-&gt;Id==other.Id;
     }
  }
  </code></pre>
  
  <p>testing code:</p>
  
  <pre><code>Employee jack1;
  jack1 == jack1;   // the operator== gets invoked.
  
  shared_ptr&lt;Employee&gt;  jack(new Employee);
  jack == jack;  //  the operator== doesn't get invoked.
  </code></pre>
  
  <p>The related code in the boost header file is:</p>
  
  <pre><code>template&lt;class T, class U&gt; inline bool operator==(shared_ptr&lt;T&gt; const &amp; a, shared_ptr&lt;U&gt; const &amp; b)
  {
          return a.get() == b.get();
  }
  </code></pre>
  
  <p>It seems that it is doing the pointer compare instead of doing the what I expect it.</p>
  
  <p>What do I do wrong?</p>