Pragmatically though I don&#x27;t use either because they are wrapped up in data structures.  With copy elision and move semantics memory basically does become automatic on a day to day basis.<p>When I am making my own data structures I basically use unique_ptr or just use std::vector directly.<p>I&#x27;ve used shared_ptr in one relatively exotic situation and no other time.<p>I&#x27;m actually not even sure what you mean when you say use after free - I rarely expose a naked pointer, and when I do the lifetime and ownership are pretty obvious.<p>I like Rust and I&#x27;m not trying to downplay its significance, but I think you are misjudging the reality of working in C++11 - memory leaks and use after free don&#x27;t seem to be an issue to me after having done nothing but C++11 for three years.