title: What is the difference between an empty and a null std::shared_ptr in C++?
body: <p>The <a href="http://www.cplusplus.com/reference/memory/shared_ptr/">cplusplus.com <code>shared_ptr</code> page</a> calls out a distinction between an <em>empty</em> <code>std::shared_ptr</code> and a <em>null</em> <code>shared_ptr</code>. The <a href="http://en.cppreference.com/w/cpp/memory/shared_ptr">cppreference.com page</a> doesn't explicitly call out the distinction, but uses both "empty" and comparison to <code>nullptr</code> in its description of <code>std::shared_ptr</code> behavior.</p>
  
  <p>Is there a difference between an empty and a null <code>shared_ptr</code>? Is there any use case for such mixed-behavior pointers? Does a non-empty null <code>shared_ptr</code> even make sense? Would there ever be a case in normal usage (i.e. if you didn't explicitly construct one) where you could end up with an empty-but-non-null <code>shared_ptr</code>?</p>
  
  <p>And do any of these answers change if you're using the Boost version instead of the C++11 version?</p>