C++ is one of the most popular programming languages.

次世代のC++規格「C++11」が国際標準として発行された。多くのC++デベロッパは、この新しいC++規格で提供される新機能に関心があると思うが、仕様書を読むのは骨が折れるとためらっている方も少なくないだろう。

そんなデベロッパの皆さんに朗報だ。C++11の登場で通常のC++コーディングとライブラリデザインなどに強く影響を与えるとみられる変更がHerb Sutter氏の記事「Elements of Modern C++ Style」にまとめられている。C++98と比べて特に見た目の変更が大きく、かつ、今後広く使われ新しいコーディングスタイルになりそうなものが紹介されており、C++11新機能を知るための導入ドキュメントとして役に立つ。

紹介されているC++11の新機能を簡単にまとめると次のとおり。

可能な限りautoを

autoの使用例その1- Elements of Modern C++ Styleより抜粋

autoの使用例その2 - Elements of Modern C++ Styleより抜粋

従来のポインタとdeleteではなくスマートポインタを

スマートポインタの使用例 - Elements of Modern C++ Styleより抜粋

ヌルポインタの値としてはnullptrを

nullptrの使用例 - Elements of Modern C++ Styleより抜粋

x.begin()/x.end()ではなくbegin(x)/end(x)を

ノンメンバbegin(x)およびend(x)使用例 - Elements of Modern C++ Styleより抜粋

すべての要素に順次アクセスする場合にはレンジペースループが便利

レンジベースループ使用例 - Elements of Modern C++ Styleより抜粋

ラムダの活用を

ラムダ使用例 - Elements of Modern C++ Styleより抜粋

コピーではなく「Move」のセマンティックを活用

Moveセマンティックの活用例 - Elements of Modern C++ Styleより抜粋

初期化コーディング{}がより多くのシーンで適用できるようになった

{}初期化コーディング活用例 - Elements of Modern C++ Styleより抜粋

もちろん、「Elements of Modern C++ Style」で紹介されている機能は、絶対に使わなければならないというものではない。同記事はC++11で導入され、そして今後C++11に準拠したソースコードでよく利用されることになるであろうスタイルをまとめた資料として参考になる。なお、同記事は読者からの指摘を受けて随時更新または記述が追加されているため、時々チェックするとよいだろう。