title: g++ template parameter error
body: <p>I have GetContainer() function as follows. </p>
  
  <pre><code>template&lt;typename I,typename T,typename Container&gt;
  Container&amp; ObjCollection&lt;I,T,Container&gt;::GetContainer()
  {
      return mContainer;
  }
  </code></pre>
  
  <p>When I use this method as follows</p>
  
  <pre><code>template&lt;typename I,typename T&gt;
  T&amp; DynamicObjCollection&lt;I,T&gt;::Insert(T&amp; t)
  {
      GetContainer().insert(&amp;t);
      return t;
  }
  </code></pre>
  
  <p>I got errors.</p>
  
  <pre><code>error: there are no arguments to ‘GetContainer’ that depend on a template parameter, 
  so a declaration of ‘GetContainer’ must be available
  
  error: (if you use ‘-fpermissive’, G++ will accept your code, but allowing the use of 
  an undeclared name is deprecated)
  </code></pre>
  
  <p>It works fine with MSVC, but g++ is not so permissive. What's wrong with the code?</p>