BOOST_FOREACH - макрос, я не люблю макросов и предпочитаю использовать алгоритмы STL + лямбда + связывание.
Также C ++ 0x будет содержать for-loop аналогично BOOST_FOREACH:
int my_array[5] = {1, 2, 3, 4, 5};
for(int &x : my_array)
{
x *= 2;
}
это еще одна причина не использовать частично мертвый BOOST_FOREACH.