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

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