Desde la perspectiva de la teoría del lenguaje de programación, a diferencia de la perspectiva de computabilidad que han ofrecido otras respuestas y comentarios, las plantillas de C ++ combinadas con conceptos corresponden a polimorfismo limitado o genérico limitado . Los conceptos mismos corresponden a las restricciones o límites colocados en un tipo.
Una plantilla es una función de nivel de tipo, parametrizada por tipo que está limitada por un concepto para implementar una interfaz particular. Cuando la plantilla se aplica a un tipo que satisface ese concepto, se genera un nuevo tipo.
Las plantillas + conceptos son análogos a los genéricos en Java, Scala o Eiffel. Se diferencian de las plantillas en C ++ anterior porque permiten que se especifiquen y verifiquen restricciones en los parámetros de tipo, mientras que las plantillas de C ++ no lo permitieron. El beneficio es una mejor comprobación estática de que el programa después de aplicar la plantilla estará bien escrito.
Una buena referencia es Pierce, Benjamin C. (2002). Tipos y lenguajes de programación . MIT Press, Capítulo 26: Cuantificación limitada.