// Build don't link:
// The standard sez that a use of a name gets the most access it can through
// the various paths that can reach it.  Here, the access decl in B gives
// us access.

struct A
{
  void f ();			
};

struct B: private virtual A
{
  A::f;
};

struct C: private virtual A, public B
{
};

int
main ()
{
  C c;

  c.f ();			
}
