title: Inheritance and templates in C++ - why are inherited members invisible?
body: <p>When a template publicly inherits from another template, aren't the base public methods supposed to be accessible?</p>
  
  <pre><code>template &lt;int a&gt;
  class Test {
  public:
      Test() {}
      int MyMethod1() { return a; }
  };
  
  template &lt;int b&gt;
  class Another : public Test&lt;b&gt;
  {
  public:
      Another() {}
      void MyMethod2() {
          MyMethod1();
      }
  };
  
  int main()
  {
      Another&lt;5&gt; a;
      a.MyMethod1();
      a.MyMethod2();
  }
  </code></pre>
  
  <p>Well, GCC craps out on this... I must be missing something totally obvious (brain melt). Help?</p>