¿Tiene sentido el polimorfismo estático para implementar una interfaz?

y feliz navidad a todos!

Estoy aprendiendo sobre el polimorfismo estático y estoy leyendo el excelente libro de Andrei Alexandrescu sobre diseño basado en políticas. Me encontré con lo siguiente, en mi código: Tengo interfazInterface que especifica ese métodoFoo debe estar presente. Esta interfaz será implementada por clase.Impl. Tengo las siguientes dos opciones:

1) polimorfismo dinámico

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

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

2) polimorfismo estático

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

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

¿Tiene sentido usar polimorfismo estático en este caso? ¿El segundo enfoque ofrece algún beneficio en comparación con el primero? La interfaz solo especifica la presencia de algunos métodos, y su mecánica es la misma para diferentes implementaciones, por lo que no son tan parecidos a los casos descritos en el libro, así que creo que solo puedo complicar las cosas.

Actualizar: No necesito comportamiento polimórfico en tiempo de ejecución; La implementación correcta es conocida en tiempo de compilación.

Respuestas a la pregunta(2)

Su respuesta a la pregunta