暗黙的型付け(その2) のシャノンさんのコメント:
あと、配列を書くときに、
var hoge = new { int ID; string Name; }[]
{ { 1, "ほげ" }, { 2, "はげ" }, { 3, "ひげ" } };
とか書けたら、ちょっと好感度アップでした。
C++0x:TR1 にはほんのり似通った tuple ちゅーのが導入されます。
boostでオタメシ:
#include <iostream>
#include <string>
#include <boost/tr1/tuple.hpp>
using namespace std;
int main() {
// string,int,string をメンバに持つtuple
tr1::tuple<string,int,string> rti;
rti = tr1::make_tuple("R・田中一郎",18,"ステキだし爽やか");
// get<N>() でN番目のメンバを参照
cout << tr1::get<0>(rti) << "は"
<< tr1::get<1>(rti) << "才、"
<< tr1::get<2>(rti) << endl;
// get<N>は左辺値なので書き換え可能。
++tr1::get<1>(rti);
string name;
int age;
// tieで一気に取り出す。 (ignoreはplaceholder)
tr1::tie(name, age, tr1::ignore) = rti;
cout << name << "は"
<< age << "才" << endl;
}
これが言語仕様をいじることなく、ライブラリだけで実現できてんですよ。
やっぱスゲぇよC++って。