Ist statischer Polymorphismus für die Implementierung einer Schnittstelle sinnvoll?

und frohe Weihnachten euch allen!

Ich lerne etwas über statischen Polymorphismus und lese Andrei Alexandrescus ausgezeichnetes Buch über richtlinienbasiertes Design. In meinem Code bin ich auf Folgendes gestoßen: Ich habe eine BenutzeroberflächeInterface was diese Methode angibtFoo muss anwesend sein. Diese Schnittstelle wird von Klasse implementiertImpl. Ich habe die folgenden zwei Möglichkeiten:

1) Dynamischer Polymorphismus

class Interface {
public:
    virtual void Foo() = 0;
}

class Impl : public Interface {
public:
    void Foo() {};
}

2) Statischer Polymorphismus

class Impl {
{
public:
    void Foo() {};
}

template <class I>
class Interface : public I
{
public:
    void Foo() { I::Foo(); } //not actually needed
}

Ist es in diesem Fall sinnvoll, statischen Polymorphismus zu verwenden? Bietet der zweite Ansatz Vorteile gegenüber dem ersten? Die Benutzeroberfläche gibt nur das Vorhandensein einiger Methoden an, und ihre Mechanismen sind für verschiedene Implementierungen gleich - also nicht ganz wie in den in diesem Buch beschriebenen Fällen, sodass ich der Meinung bin, dass ich die Dinge möglicherweise nur zu kompliziert mache.

Aktualisieren: Ich brauche kein polymorphes Verhalten zur Laufzeit. Die korrekte Implementierung ist zum Zeitpunkt der Kompilierung bekannt.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage