Предположим, у меня есть два std::vectors x и y и бинарная функция F. Я хотел бы создать новый объект z (не обязательно вектор) со свойством, что i-й элемент z будет приложением F к i-е элементы x и y. Пока что я использую
boost::range::transform(x, y, z.begin(), F)
что, конечно, требует выделения памяти для z. Моя цель, однако, состоит в том, чтобы избежать этого выделения памяти и выполнить ленивую оценку преобразования, аналогично тому, что делает boost::adaptors::transformed с унарными функциями. Другими словами, типом z будет какой-то тип boost::range. Есть ли простой способ сделать это или мне придется написать свой собственный класс диапазона? Заранее спасибо!