struct foo {
	const int id;

	explicit foo(int i) noexcept
		: id(i)
	{
		__builtin_printf("ctor of %d\n", id);
	}
	~foo() noexcept {
		__builtin_printf("dtor of %d\n", id);
	}

	foo(const foo &) = delete;
};

static foo f0(0);
thread_local foo f1(1);

int main() noexcept {
	foo f2(2);
	static foo f3(3);
	thread_local foo f4(4);

	return 0;
}
