них прав?
Похоже на ошибку в транке GCC, я не до конца пониманию что именно вызывает у компилятора попытку преобразования типов, но само преобразование точно не нужно. Более того, там ошибка уровня уже после прохождения middle end компилятора, т. е. это похоже на новые код генерации в транке для x86 которые отработали некорректно...
мсвц превью тоже, кстати, как гцц транк выдаёт ошибку
Это похоже на ошибки код-генерации всё равно, потому что 11 версия GCC на то место генерирует, вроде бы, валидный код с переключеним контекста и там нет странностей рядом, а транк ругается на совсем странное потому что нет необходимости одно в другое конвертировать вообще... слишком экспериментальная фича пока что :)
gcc trunk, разумеется. f2_task::promise_type::get_return_object возвращает task, а вы хотите f2_task (в функции f2), как это сконвертироваться должно?
спасибо, добавил код, помогло struct promise_type : task::promise_type { f2_task get_return_object() { return {}; } };
Обсуждают сегодня