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);
Klasy szablonowe i funkcje
Klasy i funkcje szablonowe można tworzyć na 2 sposoby. Długi poprzez umieszczenie klasy/funkcji o nazwie takiej samej jak szablon lub w krótszy sposób poprzez umieszczenie listy parametrów zaraz za deklaracją nazwy klasy/funkcji.
class MojaKlasa(T) { // klasa szablonowa z parametrem T }
int func(T)(T arg) { // funkcja szablonowa } Użycie jest podobne do zwykłych szablonów, ale można pominąć wtedy przestrzeń nazw: MojaKlasa!(int) a = new MojaKlasa!(int); func(52);
Zmienna liczba parametrów szablonu