Mit Hilfe von C++-Templates lässt sich genau dieser Ansatz der konfigurierbaren Einzelteile realisieren. Wie beim Lösungsansatz der dynamischen Polymorphie werden Hook-Aufrufe in eine Queue-Codeschablone eingebaut. Nun sind diese Hooks aber nicht als virtuelle Methodenaufrufe der Strategie-Klassen realisiert, sondern als Aufrufe von nicht-virtuellen inline-Methoden, die dem Compiler bereits zur Compilezeit bekannt sind und die er ohne Aufruf-Overhead direkt in den Code einbetten oder vollständig wegoptimieren kann (im Falle der leeren inline-Methoden lock und unlock bei NoSyncQueueSyncStrategy).
Listing 5 zeigt den Code der Methode write. Hier sind die Hooks Aufrufe von Methoden der Klasse Queue selbst. Damit bleibt die Frage, wie die unterschiedlichen Ausprägungen der Hook-Methoden lock, unlock und requestSpace als Methoden der Klasse Queue definiert werden: Dazu wird die Komponente Queue als C++-Klassentemplate definiert, das zur Compilezeit konfiguriert wird.
Das Klassentemplate erwartet die Template-Parameter »T_SYNC_STRATEGY« und »T_MEM_STRATEGY«. Indem Queue nun von genau diesen beiden Klassen ableitet, erbt sie auch deren Methoden, also lock und unlock von der als T_SYNC_STRATEGY und requestSpace von der als T_MEM_STRATEGY angegebenen Klasse (Listing 6).
Mit dieser Lösung generiert der Compiler exakt den gleichen Maschinencode wie bei den Wunschlösungen aus den Listings 3 und 4. Das funktioniert sogar, wenn NoSyncQueueSyncStrategy für T_SYNC_STRATEGY angegeben wird. Dann werden nämlich die Aufrufe der beiden leeren Methoden lock und unlock vom Compiler vollständig wegoptimiert.