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