у вызывающей стороны уже есть, и мы знаем, что функция его поменять не может. Вот если бы она возвращала другой объект, с небольшими изменениями, то был бы смысл. Ну а так, не очень ясно, что вот это может дать:
Some& func(Some& some)
{
return some;
}
Однако, я могу представить, когда возвращается пара "результат + прежний объект", чтобы это "прежний объект" передать в следующую функцию путем композиции. Тогда это будет схема, похожая на передачу состояния (на ней строится монада State).
std::tuple<int, Some&> func(Some& some)
{
return std::make_tuple(10, some);
}Но нужно будет написать комбинатор, который брал бы две таких функции и комбинировал их. Вероятно, придется перевести функции в лямбды.
я хочу, чтобы void func(Some& some) выглядела как оптимизированный сахар для Some func(Some some) { /**/ return std::move(some); }
Обсуждают сегодня