// { dg-do compile }
// { dg-additional-options "-std=c++14 -Wno-deprecated" }
// C++17 does not allow dynamic exception specification.

namespace a {
int b;
class c
{
};
}
class g
{
public:
  g ();
};
using a::b;
class d
{
public:
  d ();
  void e ();
};
class f
{
  d
  i ()
  {
    static d j;
    return d();
  }
  int *k () throw (a::c);
};


int *f::k () throw (a::c)
{
  static g h;
  i ();
  int l = 2;
  while (l)
    {
      --l;
      try
	{
	  operator new (b);
	}
      catch (a::c)
	{
	}
    }
  i ().e ();
  return 0;
}
