Two minor comments:<p>1.) Mistake #7 Has been somewhat fixed in the TS by specializing shared_ptr for array types (similar to unique_ptr&lt;type[]&gt; syntax). What they said was true though for C++11.<p>2.) If the data within a shared_ptr is not owned by any particular object but is otherwise constant, use shared_ptr&lt;const type&gt;. They can be created from a shared_ptr&lt;type&gt; object. This helps with the aliasing problem mentioned in mistake #1<p>And a slight nitpick on #4 - I imagine the performance of make_shared depends on the library rather than the compiler itself (and I imagine the performance gain is minimal - it is usually used for readability). Also, C++14 add make_unique, which was overlooked in C++11.