title: Why doesn't this templated inheritence work?
body: <p>I have a templated base class and a templated derived class. The compiler complains with </p>
  
  <pre><code>Error   C3861   'Item': identifier not found    
  Error   C3861   'Max': identifier not found 
  </code></pre>
  
  <p>while looking at the definition of the constructor of <code>Array</code>.</p>
  
  <p>Why can't the derived class access the base members ?</p>
  
  <pre><code>template&lt;typename Element&gt; class Array
  {
  public:
      Array() { Item = 0; Max = 0; }
  
      Element* Item;
      int Max;
  };
  
  template&lt;typename Element, int Range&gt; class StaticArray : public Array&lt;Element&gt;
  {
  public:
      StaticArray() { Item = Store; Max = Range; }
  
      int Store[Range];
  };
  </code></pre>