std::map + boost::tuples::tie + BOOST_FOREACH

以下のコードは,Boost1.32.0に加えてここにあるforeachのヘッダをboostのディレクトリに放り込んである必要があります.

#include <map>
#include <string>
#include <iostream>
#include <boost/tuple/tuple.hpp>
#include <boost/foreach.hpp>

using namespace std;
using namespace boost;


int main()
{
  map m;
  m["衛"] = "あにぃ";
  m["鈴凛"] = "アニキ";
  m["四葉"] = "兄チャマ";
  // 以下略

  string key;
  string value;
  BOOST_FOREACH(tie(key, value), m){
    cout << key << "->" << value << endl;
  }
}

こういう組み合わせによる面白さが発揮できるのはライブラリで提供しているからこそだにゃ〜.key_typeとmapped_typeにDefaultConstructibleを要求するのが微妙に不満だけれど,それはBOOST_FOREACHじゃなくてboost::tieに起因するところが大きいか.BOOST_FOREACHはオフィシャルなリリースが1.34.0以降なのが非常に残念.
ちなみにネタが古いとかキモいとかという文句は受け付けませんのであしからず.
え?コードがキモい?う〜・・・.
ネタ元は下.
http://thread.gmane.org/gmane.comp.lib.boost.devel/123454