title: How can I use `std::array` for a template parameter of the form `template<typename> class`?
body: <p>Please consider the following <code>tree</code> class</p>
  
  <pre><code>template&lt;typename T, template&lt;typename&gt; class Tuple&gt;
  class tree
  {
  private:
      T m_value;
      Tuple&lt;tree&gt; m_children;
  };
  
  template&lt;typename T, std::size_t N&gt;
  using static_tree = tree&lt;T, std::array&lt;T, N&gt;&gt;;
  </code></pre>
  
  <p>which is not well-defined. <code>std::array&lt;T, N&gt;</code> is not a suitable template parameter for <code>Tuple</code>. I assume the intend of <code>static_tree</code> is clear. We could do something like</p>
  
  <pre><code>template&lt;std::size_t N&gt;
  struct helper
  {
      template&lt;typename T&gt;
      using type = std::array&lt;T, N&gt;;
  };
  
  template&lt;typename T, std::size_t N&gt;
  using static_tree = tree&lt;T, helper&lt;N&gt;::template type&gt;;
  </code></pre>
  
  <p>Is there any other option without the <code>helper</code> class?</p>