Boost сопрограмма, как получить возвращаемое значение функции после завершения_cor_t

Я вызываю не пустые функции, используя boost :: coroutine, как

typedef boost::coroutines::coroutine< int(void) > coro_t;
typedef coro_t::caller_type Yield_target;

myClass* do_something(Yield_target& yield)
{
myClass* m = new myClass;
// ... do smt
yield();
// ... do smt
return m;
}

И тогда я вызываю свою функцию с привязкой к ней, чтобы повысить сопрограмму. После завершения функции (сопрограммы), как я могу получить возвращаемое значение myClass *?

2

Решение

Тип coro_t :: caller_type Вы упомянули в своем заявлении о вопросе, может быть устаревшим, потому что он не указан в более поздняя ускоренная документация. Тем не мение, Вот в этой более новой документации вы можете увидеть фразу в сопрограммная<> :: push_type раздел, который «вы не можете получить значения из другого контекста выполнения с помощью такого рода сопрограмм».

Хотя я не уверен, как вы собираетесь использовать библиотеку Couroutine, я подозреваю, что вы будете использовать сопрограммная<> :: push_type чаще чем сопрограммная<> :: pull_type, поэтому я думаю, вам нужно будет найти другой способ получения возвращаемого значения, а не саму библиотеку.

0

Другие решения