Я вызываю не пустые функции, используя 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 *?
Тип coro_t :: caller_type Вы упомянули в своем заявлении о вопросе, может быть устаревшим, потому что он не указан в более поздняя ускоренная документация. Тем не мение, Вот в этой более новой документации вы можете увидеть фразу в сопрограммная<> :: push_type раздел, который «вы не можете получить значения из другого контекста выполнения с помощью такого рода сопрограмм».
Хотя я не уверен, как вы собираетесь использовать библиотеку Couroutine, я подозреваю, что вы будете использовать сопрограммная<> :: push_type чаще чем сопрограммная<> :: pull_type, поэтому я думаю, вам нужно будет найти другой способ получения возвращаемого значения, а не саму библиотеку.