title: Improving safety of Clone pattern
body: <p>If one wants to implement <code>Clone</code> pattern in C++, he might not be sure about safety, because derived class may forget to override it:</p>
  
  <pre><code>struct A {
      virtual A* Clone() const {
          return new A(*this);
      }
  }
  
  struct B : A {
      int value;
  };
  
  int main() {
     B b;
     // oops
     auto b_clone = b.Clone();
     delete b_clone;
  }
  </code></pre>
  
  <p>What are the possible ways to improve <code>Clone</code> pattern in C++ in this regard?</p>
  
  <p>A more general question has been asked:
  <a href="https://stackoverflow.com/questions/12632747/forcing-a-derived-class-to-overload-a-virtual-method-in-a-non-abstract-base-clas">Forcing a derived class to overload a virtual method in a non-abstract base class</a></p>
  
  <p>However, it seems to be too general to have a good solution in C++ -- the discussion is about possible ways to enforce method override. I'm more interested in discovering a useful pattern, which might help in the exact case of using Cloneable pattern.</p>