Det finnes tre forskjellige typer templater; funksjonstemplater, klassetemplater og variabeltemplater. Sistnevnte kom med versjonsstandarden C++14. Med C++11 kan templater enten være variadiske eller ikke-variadiske. I alle tidligere versjonsstandarder er de ikke-variadiske.