<html>
    <head>
      <base href="https://bugs.llvm.org/">
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - friend declaration in derived class does not get honored"
   href="https://bugs.llvm.org/show_bug.cgi?id=35055">35055</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>friend declaration in derived class does not get honored
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>clang
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>5.0
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>All
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>All
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>normal
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>C++
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>unassignedclangbugs@nondot.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>John.Tytgat@esko.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>dgregor@apple.com, llvm-bugs@lists.llvm.org
          </td>
        </tr></table>
      <p>
        <div>
        <pre>The following produces a ".... is a protected member of..." error while the
friend declaration in the derived class is honored by gcc (multiple versions
upto trunk), Visual Studio (multiple versions upto VS2017) and ICC.

Are they all wrongly accepting this code, or is this a Clang only issue ?

--8<--
class AFriend;

class Foo
{
        protected:
                static void Bar();
};

#if 1
class DerivedFoo
:       public Foo
{
        friend class AFriend;
};
#endif

class AFriend
{
        public:
                void CallFooBar()
                {
                        Foo::Bar();
                }
};
--8<--</pre>
        </div>
      </p>


      <hr>
      <span>You are receiving this mail because:</span>

      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>