Plantilla (C++)


Las plantillas son una característica del lenguaje de programación C++ que permite que funciones y clases operen con tipos genéricos . Esto permite que una función o clase funcione en muchos tipos de datos diferentes sin tener que volver a escribir para cada uno.

Las principales fuentes de inspiración para las plantillas de C++ fueron los módulos parametrizados proporcionados por CLU y los genéricos proporcionados por Ada . [1]

Hay tres tipos de plantillas: plantillas de función, plantillas de clase y, desde C++14 , plantillas variables . Desde C++11 , las plantillas pueden ser variables o no variables; en versiones anteriores de C++ siempre son no variables.

Una plantilla de función se comporta como una función excepto que la plantilla puede tener argumentos de muchos tipos diferentes (ver ejemplo). En otras palabras, una plantilla de función representa una familia de funciones. El formato para declarar plantillas de funciones con parámetros de tipo es:

Ambas expresiones tienen el mismo significado y se comportan exactamente de la misma manera. La última forma se introdujo para evitar confusiones, [2] ya que un parámetro de tipo no necesita ser una clase hasta C++20. (Puede ser un tipo básico como into double.)

Por ejemplo, la biblioteca estándar de C++ contiene la plantilla de función max(x, y)que devuelve el mayor de xy y. Esa plantilla de función podría definirse así: