import Module;
#include <coroutine>
#include <iostream>

struct fire_and_forget {};

template <typename... Args>
struct std::coroutine_traits<fire_and_forget, Args...>
{
    struct promise_type
    {
        fire_and_forget get_return_object() const noexcept
        {
            return{};
        }

        void return_void() const noexcept
        {
        }

        suspend_never initial_suspend() const noexcept
        {
            return{};
        }

        suspend_never final_suspend() const noexcept
        {
            return{};
        }

        void unhandled_exception() const noexcept
        {
            std::terminate();
        }
    };
};

fire_and_forget test()
{
	winrt::Windows::Foundation::IAsyncAction a;
	co_await a;
}

int main()
{
}