// { dg-do compile { target c++11 } }
// { dg-prune-output "overriding" }

struct A
{
  virtual void f();
  virtual void g() throw();
  virtual void h() noexcept;
  virtual void i() noexcept(false);
  virtual void j() throw(int);	// { dg-error "dynamic exception specification" "" { target c++17 } }
};				// { dg-warning "deprecated" "" { target { ! c++17 } } .-1 }

struct B: A
{
  void f() noexcept;
  void g() noexcept;
  void h() noexcept;
  void i() noexcept;
  void j() noexcept;
};

struct C: A
{
  void f() throw();
  void g() throw();
  void h() throw();
  void i() throw();
  void j() throw();
};

struct D: A
{
  void f() noexcept(false);
  void g() noexcept(false);	// { dg-error "looser" }
  void h() noexcept(false);	// { dg-error "looser" }
  void i() noexcept(false);
  void j() noexcept(false);	// { dg-error "looser" "" { target { ! c++17 } } }
};

struct E: A
{
  void f() throw(int);		// { dg-error "dynamic exception specification" "" { target c++17 } }
				// { dg-warning "deprecated" "" { target { ! c++17 } } .-1 }
  void g() throw(int);		// { dg-error "looser" }
				// { dg-error "dynamic exception specification" "" { target c++17 } .-1 }
				// { dg-warning "deprecated" "" { target { ! c++17 } } .-2 }
  void h() throw(int);		// { dg-error "looser" }
				// { dg-error "dynamic exception specification" "" { target c++17 } .-1 }
				// { dg-warning "deprecated" "" { target { ! c++17 } } .-2 }
  void i() throw(int);		// { dg-error "dynamic exception specification" "" { target c++17 } }
				// { dg-warning "deprecated" "" { target { ! c++17 } } .-1 }
  void j() throw(int);		// { dg-error "dynamic exception specification" "" { target c++17 } }
				// { dg-warning "deprecated" "" { target { ! c++17 } } .-1 }
};

struct F: A
{
  void f();
  void g();			// { dg-error "looser" }
  void h();			// { dg-error "looser" }
  void i();
  void j();			// { dg-error "looser" "" { target { ! c++17 } } }
};
