Modern C++ design : generic programming and design patterns applied - Alexandrescu, Andrei (Pearson/Addison-Wesley, 2001)