I would describe about using templates in c++.
- functions using templates
- classes using templates
- Template Specialization
Template Specialization means that specialize your template for some particular type. eg. you define add function for integers to be integers addition but for strings it may be addition. So You need to define it seperately.