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