title: How to create concrete class from a template class
body: <p>Say I have a template class:</p>
  
  <pre><code>template &lt;typename T&gt; class StringDeque:
  public std::deque&lt;T&gt;
  {
  public:
  
      ...
  
  private:
      typedef std::deque&lt;T&gt; BaseClass; 
  };
  </code></pre>
  
  <p>Say I want to create concrete class <code>ArrayString</code> where <code>T=std::string</code>. 
  What is the proper way to achieve that:</p>
  
  <p><strong>define</strong></p>
  
  <pre><code>#define ArrayString StringDeque&lt;string&gt;
  </code></pre>
  
  <p><strong>typedef</strong></p>
  
  <pre><code>typedef StringDeque &lt; string &gt; ArrayString;
  </code></pre>
  
  <p><strong>inheritance</strong> </p>
  
  <pre><code>class ArrayString :
      public StringDeque &lt; string &gt; {};
  </code></pre>
  
  <p>I'm not sure whether all of the suggestions are valid. Anyway I'm trying to figure out which practice most fits.</p>