Multi-paradigm design for C++ - Coplien, James O. (Addison-Wesley, 1999)