Las plantillas permiten escribir funciones y clases genéricas que pueden usarse con cualquier tipo de dato. Las plantillas de clases usan la palabra clave 'template' seguida de los corchetes angulares que contienen el tipo de dato genérico, mientras que las plantillas de funciones especifican además el tipo de dato y el nombre de la función. Las instancias de plantillas de clases se crean usando la sintaxis className<dataType> classObject.