Здравствуйте, df, Вы писали:
df>А как бы все-таки обмануть? Без того, чтобы предварительно сохранять результат GetData()?
Придётся либо использовать только в рамках выражения (в котором живёт временная переменная), либо сохранять. Можно сделать обёртку, которая внутри будет хранить и исходный контейнер, и адаптеры (либо уже адаптированный range), и сама обёртка при этом будет является range. То есть примерно:
auto doubled = make_wrapper_owner(GetData(), transformed(_1 * 2));