title: Local type as template arguments in C++
body: <p>This is my code</p>
  
  <pre><code>#include &lt;vector&gt;
  template &lt;typename T, template&lt;typename&gt; class C = std::vector &gt;
  struct FooBar
  {
     /*codez*/
  };
  template&lt;typename T&gt;
  struct Global{};
  
  int main()
  {
     struct Local{};  
     FooBar&lt;Local,Global&gt; k;
  }
  </code></pre>
  
  <p>This is the error that I get</p>
  
  <p><code>template argument for ‘template&lt;class T, template&lt;class&gt; class C&gt; struct FooBar’ uses local type ‘main()::Local’</code></p>
  
  <p>Which part of the standard says that this is wrong? I am using gcc 4.5.1. How can make this code work?</p>