Czy statyczny polimorfizm ma sens dla implementacji interfejsu?

i Wesołych Świąt wszystkim!

Uczę się o statycznym polimorfizmie i czytam doskonałą książkę Andrei Alexandrescu na temat projektowania opartego na polityce. W moim kodzie natknąłem się na następujące elementy: Mam interfejsInterface który określa tę metodęFoo musi być obecny. Ten interfejs będzie implementowany przez klasęImpl. Mam następujące dwie opcje:

1) Polimorfizm dynamiczny

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

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

2) Statystyczny polimorfizm

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

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

Czy w tym przypadku ma sens używanie statycznego polimorfizmu? Czy drugie podejście oferuje jakiekolwiek korzyści w porównaniu z pierwszym? Interfejs określa tylko obecność niektórych metod, a jego mechanika jest taka sama dla różnych implementacji - tak nie jest jak przypadki opisane w książce, więc czuję, że mogę być tylko zbyt skomplikowany.

Aktualizacja: Nie potrzebuję zachowania polimorficznego w czasie wykonywania; poprawna implementacja jest znana w czasie kompilacji.

questionAnswers(2)

yourAnswerToTheQuestion