Sharing ownership with smart pointers and Creating lazy static objects recipes in Chapter 5, Advanced Data Structures