Modern C++ Design: Applied Generic and Design Patterns (C++ in Depth S )

Andrei Alexandrescu, Scott Meyers, John Vlissides