title: Why does shared_ptr<T>::use_count() return a long instead of an unsigned type?
body: <p>shared_ptr observers 20.8.2.2.5 C++14 Final Draft (n4296)</p>
  <blockquote>
  <pre><code>   long use_count() const noexcept;
  </code></pre>
  <p>Returns: the number of <code>shared_ptr</code> objects, <code>*this</code> included, that share ownership with <code>*this</code>, or 0 when <code>*this</code> is empty.</p>
  <p>[Note: <code>use_count()</code> is not necessarily efficient. — end note]</p>
  </blockquote>