std::vector<int> v1 = oven::initial_values(1,2,3,4,5);
std::vector<int> v2 = oven::initial_values(5,4,3,2,1);

assert( boost::size(v1) == boost::size(v2) );
  
std::vector<int> vo( boost::size(v1) );

foreach (e, boost::tie(v1,v2,vo) | oven::zipped)
  e.get<2>() = e.get<0>() - e.get<1>();

C++なら意図したものと同じような構文でできるよ^^