C++0x とは、 C++ の次のバージョンの仮名称です。(現在の C++ のバージョンは C++03 )
0x というのは 200x 年の意味で、 C++09 を目指しています。
C++0x の特徴としては、プログラミングをより簡単にするための構文の追加や
既存機能の強化といったものがあります。
また、言語拡張に合わせて標準ライブラリも強化されます。
たとえば、今まで C++03 で書いていた以下のコードは
#include <iostream> #include <vector> using namespace std; int main() { vector<int> v; v.push_back(3); v.push_back(1); v.push_back(4); for (vector<int>::iterator it = v.begin(), last = v.end(); it != last; ++it) { cout << *it << endl; } return 0; }
C++0x では以下のように簡単に書けるようになります
#include <iostream> #include <vector> using namespace std; int main() { vector<int> v = {3, 1, 4}; for (int item : v) { cout << item << endl; } return 0; }
ここで使われているのは以下の 2 つの言語拡張です
・初期化子リスト(ユーザー定義クラスでも配列風の初期化を書けるようにする)
・Range-base for 文(コンテナ・配列をループするための for 文)
C++0x にはほかにも、コンセプト、右辺値参照、可変引数テンプレート、型推論、ラムダ式
といった多数の言語拡張が行われる予定です
ちなみに C++03 でも、 Boost C++ Libraries を使用することによって以下のように書くことができます
#include <iostream> #include <vector> #include <boost/assign/std/vector.hpp> #include <boost/foreach.hpp> using namespace std; using namespace boost::assign; int main() { vector<int> v; v += 3, 1, 4; BOOST_FOREACH (int item, v) { cout << item << endl; } return 0; }
C++0x は、 GCC ではすでに一部の機能が実装されています。
Visual C++ も次のバージョン(10.0) で C++0x に対応する予定のようです。
(すべての機能を実装するのは難しいかもしれないそうです)
C++0x の言語拡張については以下のエントリにまとめてあります
C++0x の言語仕様はこちらで読むことができます
C++ Standards Committee Papers