Modern C++ Design: Generic Programming and Design Patte - Andrei Alexandrescu (Addison-Wesley, 2007)