モダンな C++ をはじめよう 第2版: C++98/03 から C++11/14/17 へ
価格: ¥0
-- プログラミング学習サイト「Programming Place」の作者による、新しい C++ への移行ガイド。
本書は、「モダンな C++ をはじめよう」の第2版です。
今回は、最新の C++17規格の新機能を追加したほか、初版で扱った内容も全面的に見直し、大幅な修正を行いました。
本書は、古い時代の C++ (C++98/03) を知っている方へ向けて、新しい時代の C++ (C++11/14/17) の新機能(の一部)を紹介しています。
C++11 以降の新機能は、C++プログラミングを容易にし、より良いスタイルのプログラムを実現するものです。C++ を使うのであれば、古い知識のままプログラムを書くことは、非常に勿体ないことです。
ただでさえ巨大だった言語仕様が、ますます大きくなってしまったことは事実ですが、すべてを理解する必要はありません。少しずつでも新しい機能を理解し、少しずつ日々のプログラミングに役立てていけば良いです。本書はその一歩となるべく、特に有用な新機能を選び出し、コンパクトに解説しています。
なお、分量の増大を避けるため、標準ライブラリに関する新機能や変更点は外しており、言語の文法機能に絞っています。
本書は、以下のコンパイラバージョンに対応しています。
- VisualStudio 2012 Update 5
- VisualStudio 2013 Update 5
- VisualStudio 2015 Update 3
- VisualStudio 2017 15.4.5
- gcc 4.7.3 ~ 7.2
- clang 3.3 ~ 5.0
※本書では、環境構築に関する説明は行っていません。
目次(一部抜粋)
* はじめに
** 本書の内容
** 初版との違い
** 標準規格について
*** どの規格に向けてプログラムを書くべきか
** 動作確認環境について
* 列挙型の強化
** 末尾のカンマ付加を許可 (C++11)
** Scoped Enum (C++11)
** 基盤型の指定 (C++11)
** 列挙型の宣言 (C++11)
* 型推論
** auto (C++11)
** decltype (C++11)
** decltype(auto) (C++14)
** 関数の戻り値型の推論 (C++14)
* 文法機能の強化
** long long型 (C++11)
** using による型の別名定義 (C++11)
** 範囲for文 (C++11、C++17)
** 名前空間の入れ子構文 (C++17)
** if、switch の条件式と初期化の分離 (C++17)
** 構造化束縛 (C++17)
* 新しいリテラル表現
** nullptr (C++11)
** 生文字列リテラル (C++11)
** 数値リテラルの桁区切り文字 (C++14)
** 2進数リテラル (C++14)
* 関数の新機能
** noexcept (C++11、C++17)
** 移譲コンストラクタ (C++11)
** 継承コンストラクタ (C++11)
** override (C++11)
** 関数の削除 (C++11)
* 定数式
** constexpr変数 (C++11)
** constexpr関数 (C++11/14)
** constexprコンストラクタ (C++11/14)
** static_assert (C++11、C++17)
* ラムダ式
** ラムダ式 (C++11)
** 初期化キャプチャ (C++14)
** ジェネリックラムダ (C++14)
** constexprラムダ (C++17)
* テンプレートの新機能
** テンプレートの右山括弧の扱い (C++11)
** 関数テンプレートのデフォルトテンプレート実引数 (C++11)
** エイリアステンプレート (C++11)
** クラステンプレートのテンプレート実引数の推論 (C++17)
* あとがき