Я имею в виду asio
сопрограмму без заголовка со стеком реализацию
Код основан на хакерской атаке макросов для достижения потока, подобного конечному автомату, но я не до конца понимаю, как он работает
Пример
#define ASIO_CORO_REENTER(c) \
switch (::asio::detail::coroutine_ref _coro_value = c) \
case -1: if (_coro_value) \
{ \
goto terminate_coroutine; \
terminate_coroutine: \
_coro_value = -1; \
goto bail_out_of_coroutine; \
bail_out_of_coroutine: \
break; \
} \
else /* fall-through */ case 0:
- Почему на
case -1
проверяется также значение _coro_value
? не правда ли ДОЛЖЕН быть равен -1?