I’m writing some code using a simple clone pattern, I’d like it if I were able to force derived classes to override that clone pattern, but retain the ability to use my base class. (So I don’t want to declare the clone method to be pure virtual.)
Is there anyway to enforce this restriction at the compiler level?
Unfortunately there is just no way to make this happen in C++. You can’t force a non-abstract method to be overridden in child classes. However, I might note that concrete base classes should be fairly rare in C++ and you might want to reconsider your design. With more information about your overall aims we might be able to provide a better answer for your precise needs.