auto f0(int a, int b)  ->  int;

struct Foo
{
	auto f01()  ->  bool;
	auto f02() noexcept  ->  bool;
	auto f03() noexcept(true)  ->  bool;
	auto f04() noexcept(false)  ->  bool;
	auto f05() noexcept  ->  bool=delete;
	auto f06() noexcept(true)  ->  bool=delete;
	auto f07() noexcept(false)  ->  bool=delete;

	auto f11() const  ->  bool;
	auto f12() const noexcept  ->  bool;
	auto f13() const noexcept(true)  ->  bool;
	auto f14() const noexcept(false)  ->  bool;
	auto f15() const noexcept  ->  bool=delete;
	auto f16() const noexcept(true)  ->  bool=delete;
	auto f17() const noexcept(false)  ->  bool=delete;

	auto f21() throw()  ->  bool;
	auto f22() throw()  ->  bool=delete;
	auto f23() const throw()  ->  bool;
	auto f24() const throw()  ->  bool=delete;

	auto f25() const  ->  bool*;
	auto f26() const  ->  bool* =delete;
	auto f27() const  ->  bool&;
	auto f28() const  ->  bool& =delete;

	auto f29()  ->  bool*;
	auto f30()  ->  bool* =delete;
	auto f31() noexcept  ->  bool*;
	auto f32() noexcept(true)  ->  bool*;
	auto f33() noexcept(false)  ->  bool*;
	auto f34() noexcept  ->  bool* =delete;
	auto f35() noexcept(true)  ->  bool* =delete;
	auto f36() noexcept(false)  ->  bool* =delete;
	auto f37() throw()  ->  bool*;
	auto f38() throw()  ->  bool* =delete;

	auto f39()  ->  bool&;
	auto f40()  ->  bool& =delete;
	auto f41() noexcept  ->  bool&;
	auto f42() noexcept(true)  ->  bool&;
	auto f43() noexcept(false)  ->  bool&;
	auto f44() noexcept  ->  bool& =delete;
	auto f45() noexcept(true)  ->  bool& =delete;
	auto f46() noexcept(false)  ->  bool& =delete;
	auto f47() throw()  ->  bool&;
	auto f48() throw()  ->  bool& =delete;

	auto f49() const  ->  bool*;
	auto f50() const  ->  bool* =delete;
	auto f51() const noexcept  ->  bool*;
	auto f52() const noexcept(true)  ->  bool*;
	auto f53() const noexcept(false)  ->  bool*;
	auto f54() const noexcept  ->  bool* =delete;
	auto f55() const noexcept(true)  ->  bool* =delete;
	auto f56() const noexcept(false)  ->  bool* =delete;
	auto f57() const throw()  ->  bool*;
	auto f58() const throw()  ->  bool* =delete;

	auto f59() const  ->  bool&;
	auto f60() const  ->  bool& =delete;
	auto f61() const noexcept  ->  bool&;
	auto f62() const noexcept(true)  ->  bool&;
	auto f63() const noexcept(false)  ->  bool&;
	auto f64() const noexcept  ->  bool& =delete;
	auto f65() const noexcept(true)  ->  bool& =delete;
	auto f66() const noexcept(false)  ->  bool& =delete;
	auto f67() const throw()  ->  bool&;
	auto f68() const throw()  ->  bool& =delete;
};

struct Bar
{
	Bar() : m_func([](void*)  ->  result_t {
		return magic;
	}) {}
};

void foo()
{
	auto l = [](int n)  ->  x_t {
			 return n + 5;
		 };
	x([](int n)  ->  x_t {
		return n + 5;
	});
}

static auto f25()  ->  bool {
	return true;
}

static auto f26() const noexcept(true)  ->  bool {
	return true;
}
