// Build don't link:

// Copyright (C) 2000 Free Software Foundation, Inc.
// Contributed by Nathan Sidwell 14 Nov 2000 <nathan@codesourcery.com>

// We rejected using decls bringing in functions from a base which would hide a
// nested class of the same name, but only if we had no functions by that name
// already. Also, we failed to find that using declaration during lookup. Also
// we failed to reject using declarations which matched the constructor name.

struct A
{
  int f ();
  void D ();
};

struct A2 {
  typedef int f;
};

struct B : A 
{
  using A::f;
  struct f {};
};

struct C : A 
{
  using A::f;
  int f (int);
  struct f {};
};

void foo (B *bp, C* cp)
{
  bp->f ();
  cp->f ();
}

struct D : A
{
  using A::D;   // ERROR - names constructor
};
