Quería saber por qué C++ no es compatible con la covarianza en parámetros como en el siguiente ejemplo o si hay una forma de lograrlo?C++ covarianza en los parámetros
class base {
public:
virtual base* func(base * ptr) { return new base(); }
};
class derived : public base {
public:
virtual derived* func(derived * ptr) override { return new derived(); } //not allowed
};
Una pregunta más interesante sería por qué la contra-varianza en los argumentos no es compatible. –