W D istnieje możliwość tworzenia szablonów z nieokreśloną liczbą parametrów, co może być w wielu przypadkach bardzo użyteczne. real sum(T...)(T args) { real ret = 0; foreach(a; args) ret += a; return ret; // zwróci sumę wszystkich argumentów jako liczbę rzeczywistą } Użycie takiej funkcji jest o tyle proste, że nie trzeba wymieniać wszystkich argumentów: sum(12,34434.42432,32453235432,21421,124,2424.2342,214124.5);

Metaprogramowanie z wykorzystaniem szablonów

Metaprogramowanie w D jest znacznie ułatwione dzięki zastosowaniu instrukcji warunkowej kompilacji "static if". Przykładowo szablon liczący silnię z podanej liczby (por. silnia w czasie kompilacji (c++)):

template Silnia(N) { static if(N==0) // statyczny if enum Silnia = 1; else enum Silnia = Silnia!(N-1)*N; } Gdzie N to parametr określający liczbę z jakiej liczymy silnię.

Kompilatory D pozwalają również na wykonywanie funkcji "czystych" (ang. pure) w czasie kompilacji, tak więc powyższy szablon można zastąpić zwykłą funkcją: int silnia(int n) { return (n == 1) ?