Modern C++ Design: Generic Programming and Design Patterns Applied - Alexandrescu, Andrei