title: Recursive type definition inside a template
body: <p>I want to define multidimensional array with the help of variadic template as <code>vector&lt;vector&lt;....&gt;&gt;</code>, but stumbled upon impossibility to define type <code>initializer_list&lt;initializer_list&lt;...&gt;&gt;</code>, which is needed for initializer-list-constructor. This briefly can be demonstrated by the following code</p>
  
  <pre><code>template&lt;class T, size_t dim&gt;
  class MyArr : vector &lt; MyArr &lt; T, dim - 1 &gt;&gt;
  {
  public:
      typedef initializer_list&lt;MyArr &lt; T, dim - 1 &gt;::ListType&gt; ListType;
      //using ListType = typename initializer_list&lt;MyArr &lt; T, dim - 1 &gt;::ListType&gt;;
  };
  
  template&lt;class T&gt;
  class MyArr&lt;T, 1&gt; : vector &lt; T&gt;
  {
  public:
      typedef initializer_list&lt;T&gt; ListType;
  };
  </code></pre>
  
  <p>Compiler displays "error C2923: 'std::initializer_list' : 'MyArr::ListType' is not a valid template type argument for parameter '_Elem'".</p>
  
  <p>What is the right way to define <code>ListType</code> type?
  Thanks for answers.</p>