title: Only allow further inheritance from child class
body: <p><strong>Context</strong>: I'm doing some internal cleanup to move away from large &amp; unwieldy data structures to more well-defined data structures.</p>
  <h1>Current</h1>
  <p>I have a class that does something like this:</p>
  <pre class="lang-cpp prettyprint-override"><code>class Base {
  public:
    virtual int DoStuff(BigType input);
  };
  </code></pre>
  <p>Calling code:</p>
  <pre class="lang-cpp prettyprint-override"><code>std::vector&lt;Base*&gt; bases;
  BigType input;
  
  for (const auto&amp; base : bases) {
      base.DoStuff(input);
  }
  </code></pre>
  <p>Child classes currently look like this:</p>
  <pre class="lang-cpp prettyprint-override"><code>class Child : public Base {
    int DoStuff(BigType input) const override {
      // do stuff
    }
  };
  </code></pre>
  <h1>Attempted</h1>
  <p>I added an intermediate interface:</p>
  <pre class="lang-cpp prettyprint-override"><code>template &lt;typename SmallType&gt;
  class FocusedBase : public Base {
  public:
    int DoStuff(BigType input) const override {
      return DoStuff(SmallType(input));
    }
  
    virtual int DoStuff(SmallType input);
  };
  </code></pre>
  <p>Child classes now look like this. Note that SmallType may differ across child classes:</p>
  <pre class="lang-cpp prettyprint-override"><code>class Child : public FocusedBase&lt;SmallType&gt; {
    int DoStuff(SmallType input) {
      // do stuff
    }
  };
  </code></pre>
  <p>Calling code remains the same.</p>
  <h1>Issue</h1>
  <p>I'd like to have new classes inherit from FocusedBase only, not Base. Any thoughts on how to do so?</p>