Modern C++ desing : generic programming and design patterns applied - Alexandrescu, Andrei (The C++ in depth, 2001)