Szablony (ang. template) są jednym z podejść do programowania uogólnionego. Szablony w D są bardzo podobne do szablonów i przestrzeni nazw w C++. Można im nadawać osobne funkcjonujące niezależnie nazwy przez co zachowują się wtedy jak sparametryzowana przestrzeń nazw. Szablony w D tworzy się następująco:
template Nazwa(T) {
//deklaracje funkcji, klas, zmiennych
int func(T arg) {
return sizeof(arg);
}
}
Gdzie Nazwa jest szablonową przestrzenią nazw o parametrze T. Używanie szablonów w programie następuje poprzez poprzedzenie listy parametrów w nawiasach okrągłych wykrzyknikiem.
Nazwa!(long).func(10);
Nazwa!(int[]).func(1,2,3,4,5,6,7,8,9,10);