C++ template metaprogramming concepts, tools, and techniques from boost and beyond - Abrahams, David (Addison-Welsley, 2009)