C++ 1xについて
C++ Advent Calendar jp 2010の24日目の記事です.世の中ではC++ 0xが旬のようですが,そんな古いのは置いておいてC++ 1xの話をしましょう.C++ 1xはついに破壊的変更が来ます.
include to import
includeは単なる置換でコンパイルが遅い原因にもなっていました.C++ 1xからはシンボルをインポートするだけのimportが追加され,またコンパイル処理の明確な分離によって,爆速コンパイルになっています.
struct / classの最後の;の削除
struct S { // ... } // ;がいらない!
これに苦しめられた人は結構いるのではないでしょうか!
Angel Bracketの削除
C++ 0xで>>が出来るようになったとはいえ,やっぱりこの辺はコンパイラに優しくないわけです.なので,C++ 1xでは!()を使ってテンプレートパラメータを指定するようにします.
vector!(string) v;
auto
C++ 0xでautoが入ったものの,constとかと合わせるときはconst autoとかになって冗長でした.C++ 1xでは
const v = 10; // v is int
とより書きやすくなってます.
配列,連想配列,foreach
この辺ってよく使われるんだから,組み込んだ方がいいよね,ということで組み込まれてます.後Range-based for文はRangeサポートも考慮にいれてforeachに名前が変わりました.
foreach (v : [1, 2, 3]) { // do something }
型推論も効いて使いやすいですね.
alias
typedefがあまり使い勝手がよくないので,template周りでより柔軟に使えるaliasが入りました.template parameterでも使うことができて,parameterに様々なシンボルを受け取れるようになります.