C++11とは?モダンC++の基礎となる主要機能と変更点を徹底解説
C++11の概要
C++11は、2011年に発表された現代のC++標準規格です。それまでの言語仕様に対して数多くの重要な拡張と改善をもたらし、現在のモダンC++の基礎となっています。この規格は国際標準化機構(ISO)により2011年8月12日に承認され、従来のC++03に取って代わりました。
「C++0x」という名称の由来
C++11はかつて「C++0x」という名称で知られていました。これは、次期標準規格が2008年までに完成する見込みだったものの、策定時期が不確実であったためです。「x」には8または9が当てはまる可能性があり、その柔軟性を持たせた命名でした。しかし計画は当初の想定より遅れ、最終的に2011年に確定したため、「C++11」と呼ばれるようになりました。つまりC++0xは公開前の仮称であり、規格が正式に固まった2011年にC++11という名称が与えられたのです。
C++11の主な変更点・追加機能
C++11では、開発者の生産性とコードの安全性・効率性を大幅に向上させるさまざまな機能が導入されました。主な変更点は以下の通りです。
- 初期化子リスト(Initializer lists)
- 自動型推論(auto)
- 右辺値参照とムーブコンストラクタ
- constexpr ― 一般化された定数式
- POD(Plain Old Data)の定義の変更
- 一様初期化(Uniform initialization)
- 範囲ベースforループ
- ラムダ関数とラムダ式
- 代替関数構文(末尾戻り値型)
- 明示的なoverrideおよびfinal指定
- 定数ヌルポインタ nullptr
- 強く型付けされた列挙型(enum class)
- 適切な位置では右山括弧(>>)を演算子として扱わないよう変更
- 可変引数テンプレート
- マルチスレッド対応のメモリモデル
- STLへのハッシュテーブルの追加
- 標準ライブラリへの正規表現の追加
- shared_ptrやweak_ptrなど汎用スマートポインタの追加
これら以外にも多数の機能が追加されています。完全な機能リストと具体的なコード例については、WikipediaのC++11のページを参照してください。
-
さらばOpera――アップデートによる「裏切り」と、長年の付き合いに終止符を打った理由
「裏切られた」という感覚は、おそらく最も耐えがたい感情のひとつです。自分が託した信頼が踏みにじられたという厳しい現実に直面したとき、人は防御の壁を失ってしまいます。人間関係であれば怒りを覚え、ときには暴力にすら発展しかねません。だからこそ、反逆罪がこれほど重い刑罰の対象となるのも無理はありません。ソフトウェアの場合であれば、電子の断頭台を用意してe斧を振りかざすことになるわけです。ソフトウェアが信頼を裏切ったなら、それは徹底的な大掃除の時なのです。私は何年もの間、Operaをセカンダリ(サブ)ブラウザとして使ってきました。完璧ではありませんでしたが、特に問題もなく安定して動作していました。後期
-
誕生日プレゼントの新ノートPC!HP Pavilion dv6でWindows 7とUbuntuのデュアルブート環境を構築
いいえ、タイプミスではありません。実はまた新しいノートパソコンが手に入りました。誕生日プレゼントとして贈られたものです。つまり、昨年購入したLG RD510の話ではなく、まったく新しいマシンの話です。RD510はLinux専用機として、内蔵ディスクからクアッドブート、外付けディスクからさらに3つのディストリビューションを起動し、今後さらに追加する予定でしたが、この新型ノートには別の使命が与えられています。 このマシンはハイエンドゲーミングを念頭に選びました。Windowsで動かしている古いデスクトップは最新ゲームに対して性能不足だったため、新しくパワフルなマシンが必要だったのです。そこで、自ら