title: Why can't I call a template base class constructor with a const_iterator?
body: <p>For some reason, the following code gives the error <code>Symbol 'TemplateBase' could not be resolved.</code>:</p>
  
  <pre><code>template &lt;typename T&gt;
  class TemplateBase
  {
      TemplateBase(std::map&lt;std::string, T&gt;::const_iterator anIterator)
      { }
  };
  
  class SubClass : public TemplateBase&lt;int&gt;
  {
      SubClass(std::map&lt;std::string, int&gt;::const_iterator anIterator) :
          TemplateBase&lt;int&gt;(anIterator) //Error: Symbol 'TemplateBase' could not be resolved.
      { }
  };
  </code></pre>
  
  <p>Strangely, no error appears when I remove the <code>::const_iterator</code> and only <code>std::map&lt;std::string, int&gt;</code> remains:</p>
  
  <pre><code>template &lt;typename T&gt;
  class TemplateBase
  {
      TemplateBase(std::map&lt;std::string, T&gt; aMap)
      { }
  };
  
  class SubClass : public TemplateBase&lt;int&gt;
  {
      SubClass(std::map&lt;std::string, int&gt; aMap) :
          TemplateBase&lt;int&gt;(aMap) //No error.
      { }
  };
  </code></pre>
  
  <p>Additionally, the following function gives no error either, so it really seems related to the combination of a template base class call with a const_iterator:</p>
  
  <pre><code>void function()
  {
      std::map&lt;std::string, int&gt;::const_iterator anIterator;
      TemplateBase&lt;int&gt; aTemplateBase(anIterator); //No error
  }
  </code></pre>
  
  <p>Is there some rule against using const_iterator as an argument for base class template constructors that I'm unaware of? Or is this a compiler bug?</p>
  
  <p>I'm compiling with MinGW 64bit 4.9.0 on Windows 7, using C++11.</p>