int i;
hoge h;
fuga f;
piyo p;
for_each(i, h, f, p).do(print);

とか

int i, j;
hoge *p, *q;
for_each_pair({i, j}, {p, q}).do(swap);

みたいな書き方を実現するテンプラテクニックってありますか?
c++0xのみ可でもおkです