Design Patterns in Modern C++ : Reusable Approaches for Object-Oriented Software Design (2018)