BUG: C2876 with using Declaration on Private Base Class Member (272739)



The information in this article applies to:

  • Microsoft Visual C++, 32-bit Enterprise Edition 6.0
  • Microsoft Visual C++, 32-bit Professional Edition 6.0
  • Microsoft Visual C++, 32-bit Learning Edition 6.0

This article was previously published under Q272739

SYMPTOMS

You may receive the following error message when you compile a source file:
error C2876: 'Base::fun' : not all overloads are accessible
Please refer to the sample code in the "More Information" section for details.

STATUS

Microsoft has confirmed that this is a bug in the Microsoft products that are listed at the beginning of this article.

MORE INFORMATION

The compiler does not allow a private base class member name to be injected into a derived class by a using declaration even though the derived class is declared as a friend class of the base class.

Steps to Reproduce Behavior

The following sample code demonstrates the bug:
//test.cpp
// compiler option needed: none
class Derived;
class Base
{
friend class Derived;
void fun(void);
};

class Derived : public Base
{
protected:
using Base::fun;
};

				

Modification Type:MinorLast Reviewed:7/5/2005
Keywords:kbBug kbCompiler kbCPPonly KB272739