...

/

Comparison with Runtime Polymorphism

Comparison with Runtime Polymorphism

Learn how to use runtime polymorphism through an example of a generic modulus function using if constexpr.

Runtime polymorphism

As a side note, if we were to implement the with traditional runtime polymorphism, using inheritance and virtual functions to achieve the same functionality, the implementation would look as follows:

Press + to interact
struct AnimalBase {
virtual ~AnimalBase() {}
virtual auto speak() const -> void {}
};
struct Bear : public AnimalBase {
auto roar() const { std::cout << "roar\n"; }
auto speak() const -> void override { roar(); }
};
struct Duck : public AnimalBase {
auto quack() const { std::cout << "quack\n"; }
auto speak() const -> void override { quack(); }
};
auto speak(const AnimalBase& a) {
a.speak();
}

The objects have to be accessed using pointers or references, and the type is inferred at runtime, which results in a performance loss compared with the compile-time version, ...