Static Versus Dynamic Polymorphism When Implementing Variability In C++