De uma perspectiva da teoria da linguagem de programação, em oposição à perspectiva da computabilidade oferecida por outras respostas e comentários, os modelos C ++ combinados com os conceitos correspondem ao polimorfismo limitado ou à genicidade restrita . Os próprios conceitos correspondem às restrições ou limites colocados em um tipo.
Um modelo é uma função em nível de tipo, parametrizada por tipo que é restringida por um conceito para implementar uma interface específica. Quando o modelo é aplicado a um tipo que satisfaz esse conceito, um novo tipo resulta.
Modelos + conceitos são análogos aos genéricos em Java, Scala ou Eiffel. Eles diferem dos modelos no C ++ anterior porque permitem que restrições nos parâmetros de tipo sejam especificadas e verificadas, enquanto os modelos C ++ não permitem isso. O benefício é uma melhor verificação estática de que o programa após a aplicação do modelo será bem digitado.
Uma boa referência é Pierce, Benjamin C. (2002). Tipos e linguagens de programação . MIT Press, Capítulo 26: Quantificação limitada.