Poniższy przykład pokazuje wykorzystanie statycznej instrukcji „if”, instrukcji wykonywanej w trakcie kompilacji, do obliczania wartości silni:
template Factorial(static n) { static if(n <= 1) const Factorial = 1; else const Factorial = n * Factorial!(n - 1); }
Poniżej pokazana jest natomiast klasyczna funkcja, która bardzo przypomina wersję z szablonem:
ulong factorial(ulong n) { if(n <= 1) return 1; else return n * factorial(n - 1); }
Poniżej pokazane jest wykorzystanie szablonu i funkcji do obliczenia wartości silni w trakcie kompilacji. W języku D nie ma konieczności deklarowania typów stałych, ponieważ mogą one zostać wyliczone z prawej strony wyrażenia.
const fact_7 = Factorial!(7);
Zwykłe funkcje mogą być obliczone w trakcie kompilacji, gdy są użyte w stałych wyrażeniach spełniających określone kryteria.
const fact_9 = factorial(9);
Szablon std.metastrings.Format udostępnia formatowanie tekstu w stylu printf, którego wynik jest wyświetlany podczas kompilacji przez dyrektywę msg.
import std.metastrings; pragma(msg, Format!("7! = %s", fact_7)); pragma(msg, Format!("9!