Generative programming distinguishes between configuration DSL and
implementation components configuration languages (ICCL). A DSL is language
in the problem space and a ICCL is a language in the solution space. The
template type expressions are actually the words of a embedded ICCL rather
than a DSL because they describe the configuration of implementation
components.