c++ copy standards cloning

¿Por qué no hay un mecanismo de operador de clonación polimórfica predeterminado en c++?



copy standards (1)

Porque, pague por lo que necesita (si fuera automático para cualquier tipo, todas las clases serían virtuales).

No hay nada que le impida implementar esto como una clase base de CRTP, por lo que no se necesita soporte de idioma.

Puede presentar una propuesta agregando dicha clase base (junto con un value_ptr<T, std::default_clone<T> > y especializaciones adecuadas :))

Quiero decir, un operador de clonación, que de forma predeterminada usa el constructor de copia y el nuevo operador para devolver un nuevo objeto. De modo que si la declaración en la clase base es virtual , automáticamente proporcionaría un mecanismo de clonación polimórfica (cualquier clase no debería ser virtual por defecto)

Ventajas:

  • Evite hacer Derived * clone() const { return new Derived(*this); } Derived * clone() const { return new Derived(*this); } todas partes

  • Permita que los punteros inteligentes estándar, como std::unique_ptr o uno copiable dedicado, clonen el objeto sin que dependan de una semántica no estándar.

¿Cuál sería el riesgo / inconveniente?