Meanwhile, a gentleman helped me by providing this code. Posting it here for any comments

#include <boost/typeof/typeof.hpp>

#define FOREACH_2(def1, def2, r1, r2) \
for(std::pair<BOOST_TYPEOF((r1).begin()), \
BOOST_TYPEOF((r2).begin())> _it12_((r1).begin(),(r2).begin()),\
_e12_((r1).end(), (r2).end()); \
_it12_.first != _e12_.first && _it12_.second != _e12_.second; \
++_it12_.first, ++_it12_.second) \
if(int _cnt1_ = 1) \
for(def1 = *_it12_.first; _cnt1_; _cnt1_ = 0) \
if(int _cnt2_ = 1) \
for(def2 = *_it12_.second; _cnt2_; _cnt2_ = 0)


Thanks,
Gokul.


On Sun, Feb 21, 2010 at 8:24 PM, Gokulakannan Somasundaram <gokul007@gmail.com> wrote:
Sorry the construct is like this


std::vector<int>::iterator  iter1;
std::vector<std::string>::iterator iter2;
for( iter1 = cont1->begin(), iter2 = cont2->begin();
             iter1 != cont1->end() && iter2 != cont2->end(); ++iter1, ++iter2 )
{
     int x = *iter1;
     std::string y = *iter2;

    .....
}

I have change the || into &&.

Thanks,
Gokul


On Sun, Feb 21, 2010 at 8:20 PM, Gokulakannan Somasundaram <gokul007@gmail.com> wrote:
Hi,
    Is it possible to use Boost Foreach to iterate over two containers simultaneously? I have done my preliminary search in the lists and i couldn't find a solution. I am asking for a solution to iteration like this

std::vector<int>::iterator  iter1;
std::vector<std::string>::iterator iter2;

for( iter1 = cont1->begin(), iter2 = cont2->begin();
             iter1 != cont1->end() || iter2 != cont2->end(); ++iter1, ++iter2 )
{
     int x = *iter1;
     std::string y = *iter2;

    .....
}

If this is not present, please consider this as a feature request. The syntax below can also be considered

forboth( int x, std::string y, cont1, cont2 )
{
}


Thanks,
Gokul.