隠しておくことじゃないし。
Chapter1-3が僕、それ以降がアキラくん。
なので実質アキラくんの本なのね♪
絶賛予約受付中、よろしくおねがいしまーす。
Chapter 1 テンプレート前史
1-1 C言語をベースとしたC++
要素を選ばないSmalltalk流コンテナの実装
1-2 #defineマクロによるテンプレートもどき
1-3 Chapter 1のまとめ
Chapter 2 テンプレートの基礎
2-1 テンプレートとその種類
関数テンプレート
クラステンプレート
メンバテンプレート
2-2 明示的なインスタンス化
2-3 デフォルトテンプレート引数
2-4 テンプレート引数に整数値を指定する
テンプレート引数にポインタを与える
2-5 コンストラクタテンプレート
2-6 Two-Phase Lookupとtypename、templateキーワード
typenameキーワード
template限定子
2-7 特殊化
部分特殊化
呼び出される関数の選ばれ方
2-8 テンプレート・テンプレート・パラメータ
2-9 Chapter 2のまとめ
Chapter 3 Generic Programmingの基礎
3-1 標準ライブラリの欠如
3-2 STLとGeneric Programming
関数オブジェクト
3-3 はじめてのGeneric Programming
3-4 ヘルパ関数による型マッチング
3-5 タグ・ディスパッチ
3-6 パラメータ化継承
3-7 Chapter 3のまとめ
Chapter 4 テンプレートメタプログラミング
4-1 テンプレートメタプログラミングとは
4-2 再帰テンプレート
テンプレートを使用しないプログラミング
メタ関数
factorialをコンパイル時に計算する
メタ関数の応用例
4-3 型を操作するメタ関数
型を修飾する
型修飾を外す
4-4 複数の戻り値を持つメタ関数
4-5 コンパイル時if文
4-6 高階メタ関数
高階関数とは
メタ関数を受け取るメタ関数
4-7 チューリング完全
4-8 Chapter 4のまとめ
Chapter 5 SFINAE
5-1 SFINAEの基礎
5-2 Range-base STLアルゴリズム
begin()/end()の汎用化
イテレータ型の汎用化
5-3 SFINAEとsizeof
型特性メタ関数とは
SFINAE を使用した型特性メタ関数
5-4 型特性によるオーバーロード
5-5 Chapter 5のまとめ
Chapter 6 ポリシー
6-1 ポリシーとポリシークラス
6-2 ポリシークラスのデフォルト指定
6-3 カスタマイズ性の高いクラス設計
6-4 ポリシーのいろいろな設計
static メンバ
インスタンスメンバ
継承
テンプレートパラメータのデフォルト引数
typedefによる名前付け
テンプレート・テンプレート・パラメータ
複数の設計方式を組み合わせる
6-5 C++標準ライブラリにおけるポリシー
std::allocator
std::map
6-6 Chapter 6のまとめ
Chapter 7 Type Erasure
7-1 Type Erasure とは
7-2 Type Erasureの実現方法
void*
仮想関数テーブルを自作する方法
非テンプレート基本クラスとテンプレート派生クラス
7-3 Boostにおける使用例
boost::shared_ptr
boost::any
boost::function
Type Erasureを使用したfunctionの実装
タグ・ディスパッチにするオーバーロード
7-4 Chapter 7のまとめ
Chapter 8 CRTP
8-1 CRTPの基本
仮想関数を使用した動的な多態性
CRTPを使用した静的な多態性
8-2 Template Methodパターンの実装
静的なTemplate Methodパターンの実装
8-3 比較演算子の自動生成
Barton-Nackman trick
Barton-Nackman trick の問題点
ADL
8-4 Chapter 8のまとめ
Chapter 9 テンプレート型変換演算子
9-1 型変換演算子とは
9-2 operator bool()
foreach文を作成する
9-3 戻り値の型によるオーバーロード
9-4 戻り値型の推論
9-5 lexical_cast
9-6 Chapter 9のまとめ
Chapter 10 Expression Template
10-1 Expression Templateとは
10-2 一時オブジェクトのコスト
10-3 Expression Templateの手法
10-4 演算クラスの設計を見直す
10-5 一時式の問題と対処法
10-6 Chapter 10のまとめ
Chapter 11 Extension Member Function
11-1 Extension Member Functionとは
11-2 ヘルパ関数
11-3 拡張メンバ
operator┃
std::tr1::result_ofメタ関数
11-4 vector┃shrink_to_fit
11-5 Range-baseライブラリ
reversedの実装
result_of の戻り値の型をどう書くか
operator┃の汎用化
イテレータアダプタ
11-6 Rangeアダプタの実装例
filtered
transformed
front
copied
11-7 Boost.Foreachと組み合わせる
11-8 Boost.Lambdaと組み合わせる
11-9 Range-baseライブラリの紹介
11-10 Chapter 11のまとめ
Chapter 12 C++0xにおけるテンプレート
12-1 C++0xとテンプレート
連続した山カッコの問題改善
関数テンプレートにおけるデフォルトテンプレート引数
ローカル型と無名型をテンプレート引数として使用可能
Template Aliases
一般化された定数式
コンパイル時アサート
可変引数テンプレート
初期化子リスト
型推論
コンセプト
コンセプトマップ
Range-base for文
12-2 C++0xの標準ライブラリ
日付・時間ライブラリ
スレッドライブラリ
新たなコンテナ
新たなアルゴリズムの追加
配置挿入(Placement Insert)
12-3 Chapter 12のまとめ