title: Is there a way to call a template constructor from a specialized constructor?
body: <p>Lets say I have this class:</p>
  <pre><code>template &lt;class T&gt;
  class Test
  {
      Test(T* x);
  
      const T* const t;
      int i{0};
  };
  </code></pre>
  <p>I want <code>t</code> to always be initialized with <code>x</code>:</p>
  <pre><code>template &lt;class T&gt; Test&lt;T&gt;::Test(T* x) : t{x} {}
  </code></pre>
  <p>And I have two specializations:</p>
  <pre><code>template &lt;&gt; Test&lt;Foo&gt;::Test(Foo* x) : t{x} { i = 1; }
  template &lt;&gt; Test&lt;Bar&gt;::Test(Bar* x) : t{x} { i = 2; }
  </code></pre>
  <p>Next, I'm extending the class with some other stuff, and that first (templated) constructor does a lot more than just setting <code>t</code>.</p>
  <p>All things that I want to do for both <code>T = Foo</code> and <code>T = Bar</code>.</p>
  <p>Is there some way that I can call the templated constructor from the specialized constructors?</p>
  <pre><code>//This does not work, since it will create a delegation cycle
  template &lt;&gt; Test&lt;Foo&gt;::Test(Foo* x) : Test(x) { i = 1; }
  template &lt;&gt; Test&lt;Bar&gt;::Test(Bar* x) : Test(x) { i = 2; }
  </code></pre>