Identify the compiler used and its various features.
Templates to manipulate template parameter sequences (also known as alias sequences).
Information about the target operating system, environment, and CPU.
Templates which extract information about types and symbols at compile time.