I don't know if I can tell you want we use internally so I just talk about C++ programming in general and Google's open source projects. I think you will find use of std::shared_ptr in many modern C++ code bases.
In Google's Abseil strings library. There is a data structure called Cord. A cord can store text just like a string but internally it is constructed using smaller cords. This makes string part sharable and concatenation very cheap. To determine if a cord can be deleted, reference counting is used.
https://github.com/abseil/abseil-cpp/blob/master/absl/strings/internal/cord_internal.h#L32
For thread safety, the reference counter is implemented using C++'s atomic type.