C ++ - Kovarianz in Parametern

Ich wollte wissen, warum C ++ keine Kovarianz bei Parametern wie im folgenden Beispiel unterstützt oder ob es einen Weg gibt, dies zu erreichen.

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
};

Antworten auf die Frage(1)

Ihre Antwort auf die Frage