There's not so much C++ books on design patterns (those by the late Mark Joshi and myself being the exceptions). And there is the original Gamma best-seller.
The original Gamma patterns are frozen in time (a snapshot from C++ 1990..) and unfortunately have been superseded/subsumed/made redundant due to:
. OO, generic and functional programming models (e.g. lambdas, delegates).
. They are bottom-up, low-level implementation constructs. They do not help with top-down decomposition.
. No support for parallel design patterns.
Still, the design ideas are good and of universal applicability. The implementation details have become much easier in the last 25 years since patterns were published. I used them on many applications in CAD, process, optical technology and finance in both C++ and C#.
Boost C++ Libraries has support for Flyweight, Factory, Observer (signals2), Visitor (static_visitor), State (MSM), Interpreter (Xpressive, Spirit). etc.
There are also a number of health warnings when jumping head-first into design patterns.
I discuss these "multi-paradigm/multi-language" design patterns in my soon to appear second edition C++ {11, 14, 17} book.