This chapter is devoted to some cool and hard to understand metaprogramming methods. These methods are not for everyday use, but they may be of real help for the development of generic libraries.
Chapter 4, Compile-time Tricks, already covered the basics of metaprogramming. Reading it is recommended for better understanding. In this chapter, we'll go deeper and see how multiple types can be packed in a single tuple like type. We'll make functions for manipulating collections of types, we'll see how types of compile-time collections may be changed, and how compile-time tricks can be mixed with runtime. All this is metaprogramming.
Fasten your seat belts and get ready, lets go...!