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!