Est-il possible d'utiliser boost::foreach avec std::map?

Je trouve boost::foreach très utile car il me permet de gagner beaucoup de l'écriture. Par exemple, disons que je veux imprimer tous les éléments dans une liste:

std::list<int> numbers = { 1, 2, 3, 4 };
for (std::list<int>::iterator i = numbers.begin(); i != numbers.end(); ++i)
   cout << *i << " ";

boost::foreach rend le code ci-dessus beaucoup plus simple:

std::list<int> numbers = { 1, 2, 3, 4 };
BOOST_FOREACH (int i, numbers)
   cout << i << " ";

Beaucoup mieux! Cependant je n'ai jamais trouvé un moyen (si c'est possible) à utiliser pour std::maps. La documentation a des exemples avec des types comme vector ou string.