// { dg-do compile }
// { dg-additional-options "-std=gnu++11 -Wno-return-type" }

enum class nsresult;
class A;
class B
{
public:
    B (int);
    A *operator->();
};
class C
{
};
class A
{
public:
    virtual nsresult AddObserver (const char *, C *, bool) = 0;
};
class D : A
{
  nsresult
      AddObserver (const char *p1, C *p2, bool p3)
	{
	  AddObserver (p1, p2, p3);
	}
};
char *prefList[]{};
class F : C
{
  nsresult Install ();
};
nsresult
F::Install ()
{
  B branch = 0;
  for (int i;;)
    branch->AddObserver (prefList[i], this, false);
}
