А вот это интересный вопрос. unique_ptr<T> означает, что либо T плохо перемещается, либо T& полиморфный; плохо перемещаются большие объекты и объекты с неконтролируемыми ссылками, полиморфные возвраты обычно существенно рантаймовы и завязаны на ввод. Если я ничего не упускаю, то в случае неконтролируемых обратных ссылок нас уже ничего не спасёт, а в остальных (большой или данные для типа читались в рантайме) объект потенциально-асинхронный и логика с лямбдами для него роднее?
(а) T большой => хотим многопоточить (б) T зависит от чтения из std::cin => хотим асинхронить (в) на T создаются и потом стираются ссылки => лайфтаймы не работают если хотим многопоточить/асинхронить, то обычно мы хотим явно записанную операцию над объектом
Ты хочешь добиться такой ситуации, что у тебя никогда объект и его кишки не встречаются в одном scope. Для этого вместо do_smth(obj.inner()) ты делаешь object.send_inner_to(do_smth)
(а) T большой => хотим многопоточить (б) T зависит от чтения из std::cin => хотим асинхронить (в) на T создаются и потом стираются ссылки => лайфтаймы не работают если хотим многопоточить/асинхронить, то обычно мы хотим явно записанную операцию над объектом
не-не-не, я предллагаю не 3 проблемв решать, а одну - висящие ссылки
Задачу по использованию tuple там, где нет полноценной STL и std::exception, но есть, как минимум, набор собственных type_traits и доп. функций вроде move/forward
Задачу по использованию tuple там, где нет полноценной STL и std::exception, но есть, как минимум, набор собственных type_traits и доп. функций вроде move/forward
Задачу по использованию tuple там, где нет полноценной STL и std::exception, но есть, как минимум, набор собственных type_traits и доп. функций вроде move/forward