title: Is it required to specify the template argument of a base class if the base class is a parameter type of a member function?
body: <p>The following code is accepted by VC++ 2013, but rejected by clang 3.4.</p>
  
  <p>Which compiler is right as per the C++ standard?</p>
  
  <pre><code>template&lt;class T&gt;
  struct A
  {
      T n;
  };
  
  template&lt;class T&gt;
  struct B : A&lt;T&gt;
  {
      // VC++ 2013 : OK
      // clang : error : use of class template 'A' requires template arguments
      B&amp; f1(const A&amp; obj) 
      {
          return *this;
      }
  
      // VC++ : OK
      // clang : OK
      B&amp; f2(const A&lt;T&gt;&amp; obj)
      {
          return *this;
      }
  };
  
  int main()
  {
      B&lt;int&gt; b;
  }
  </code></pre>