Имеет ли смысл статический полиморфизм для реализации интерфейса?

и с Рождеством всех!

Я изучаю статический полиморфизм и читаю прекрасную книгу Андрея Александреску о политическом дизайне. В моем коде я обнаружил следующее: у меня есть интерфейсInterface который определяет этот методFoo должен присутствовать. Этот интерфейс будет реализован классомImpl, У меня есть следующие два варианта:

1) Динамический полиморфизм

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

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

2) Статический полиморфизм

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

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

Имеет ли смысл в этом случае использовать статический полиморфизм? Второй подход дает какие-либо преимущества по сравнению с первым? Интерфейс определяет только наличие некоторых методов, и его механика одинакова для разных реализаций - поэтому не совсем так, как в случаях, описанных в книге, поэтому я чувствую, что могу только усложнять вещи.

Обновить: Мне не нужно полиморфное поведение во время выполнения; правильная реализация известна во время компиляции.

Ответы на вопрос(2)

Ваш ответ на вопрос