C++はどこ行くの。

A Brief Look at C++0xを読んで、今頃ながらC++0xのことを知った。

C++0xはいまのC++の改良版ということなので、言語のコンセプトは変わらないようで、ほっとした。いままでもこれからも "general-purpose programming language with a bias towards systems programming" (システムプログラミング向けに強化した汎用言語?)らしい。首尾一貫していることはすばらしい。「システムプログラミング」に絞りたいのか汎用なのか、立場が曖昧というか絶妙なあたりも昔からですね。

こんなサンプルが紹介されている。

1: template<class T> using Vec = vector<T,My_alloc<T>>;
2: Vec<double> v = { 2.3, 1.2, 6.7, 4.5  };
3: sort(v);
4: for(auto p = v.begin(); p!=v.end(); ++p)
5:     cout << *p << endl;

これを見て、2つの方向へ改良が進んでるんだなぁ、と思った。ひとつは、使うのが簡単になる方向。テンプレート引数の>>が普通に書けるとか、型を省略できるautoとか、単純にうれしい。これらは言語仕様のちょっとした追加で実現されていると思う。

もうひとつは、より便利で強力なライブラリを作れるようにする方向。ライブラリ作者向け。2行目とか3行目とか。これらは氷山の一角だろうけど、裏ではクラスやテンプレートの言語仕様をけっこう大胆に拡張してる気がする。個人的にはわくわくする反面、いまでも十分奥が深いのにもっと深くなることを思うと気が遠くなるよ。