Shared pointers play a fundamental part of modern C++ programming. However, they come with a price. The price usually known is the overhead of the control object, which can became even more expensive if make_shared() is used. But there is an additional price that can play an important role if good performance is key: synchronization. As a consequence counter-intuitive things such as passing shared pointers by reference can become important. This talk discusses the whole story of shared pointers.