title: Why doesn't clang allow a derived class to call a protected base function?
body: <pre><code>template&lt;int N&gt;
  struct B
  {
  protected:
      void f() {} 
  };
  
  template&lt;int N&gt;
  struct A : B&lt;N&gt; 
  {
      A()
      {
          this-&gt;f(); // ok
          f(); // error : use of undeclared identifier 'f'
      }
  };
  
  int main()
  {
      A&lt;8&gt; a;
  }
  </code></pre>
  
  <p>My C++ compiler is clang 3.8.</p>
  
  <p>Why doesn't clang allow a derived class to call a protected base function?</p>