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;
}
