// PR c++/38579
struct P 
{
protected:
  P() {}
  P(const P&) {}
};
struct B : protected P
{
  B() {}
};
struct C : public P
{
  // C can access P's copy ctor, but can't convert b to const P&.
  C(const B& b) : P(b) {}	// { dg-error "inaccessible base" }
};
void foo()
{
  B b;
  C c(b);
}