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.