title: template template argument - type/value mismatch error
body: <p>Here's a sample code:</p>
  
  <pre><code>#include &lt;stack&gt;
  #include &lt;cstddef&gt;
  
  template &lt;std::size_t N,
           template &lt;class&gt; class Stack = std::stack
           &gt;   
  class Tower : protected Stack&lt;int&gt;
  {   
      public:
          Tower() : Stack&lt;int&gt;(N)
          {   
          }   
  };  
  
  
  int main(int argc, char **argv)
  {   
      Tower&lt;5L&gt; tower1();
  } 
  </code></pre>
  
  <p>And I see the compiler (gcc) is not happy:</p>
  
  <pre><code>file.cpp: In function 'int main(int, char**)':
  file.cpp:18:11: error: type/value mismatch at argument 2 in template parameter 
  list for 'template&lt;long unsigned int N, template&lt;class&gt; class Stack&gt; class Tower'
  file.cpp:18:11: error: expected a template of type 'template&lt;class&gt; class Stack',
  got 'template&lt;class _Tp, class _Sequence&gt; class std::stack'
  file.cpp:18:21: error: invalid type in declaration before ';' token
  </code></pre>
  
  <p>The standard stack container has this form: </p>
  
  <p><code>template &lt;class Type, class Container = deque&lt;Type&gt; &gt; class stack</code>;</p>
  
  <p>Meaning I should be fine to pass only one template argument here!</p>
  
  <p>Any thoughts on how to resolve this?
  Thanks</p>