東方算程譚

Oriental Code Talk ── επιστημηが与太をこく、弾幕とは無縁のシロモノ。

目次

Blog 利用状況

ニュース

著作とお薦めの品々は

著作とお薦めの品々は
東方熱帯林へ。

あわせて読みたい

わんくま

  1. 東京勉強会#2
    C++/CLI カクテル・レシピ
  2. 東京勉強会#3
    template vs. generics
  3. 大阪勉強会#6
    C++むかしばなし
  4. 東京勉強会#7
    C++むかしばなし
  5. 東京勉強会#8
    STL/CLRによるGeneric Programming
  6. TechEd 2007 @YOKOHAMA
    C++・C++/CLI・C# 適材適所
  7. 東京勉強会#14
    Making of BOF
  8. 東京勉強会#15
    状態遷移
  9. 名古屋勉強会#2
    WinUnit - お気楽お手軽UnitTest

CodeZine

  1. Cで実現する「ぷちオブジェクト指向」
  2. CUnitによるテスト駆動開発
  3. SQLiteで組み込みDB体験(2007年版)
  4. C++/CLIによるCライブラリの.NET化
  5. C# 1.1からC# 3.0まで~言語仕様の進化
  6. BoostでC++0xのライブラリ「TR1」を先取りしよう (1)
  7. BoostでC++0xのライブラリ「TR1」を先取りしよう (2)
  8. BoostでC++0xのライブラリ「TR1」を先取りしよう (3)
  9. BoostでC++0xのライブラリ「TR1」を先取りしよう (4)
  10. BoostでC++0xのライブラリ「TR1」を先取りしよう (5)
  11. C/C++に対応した、もうひとつのUnitTestFramework ─ WinUnit
  12. SQLiteで"おこづかいちょう"
  13. STL/CLRツアーガイド
  14. マージ・ソート : 巨大データのソート法
  15. ヒープソートのアルゴリズム
  16. C++0xの新機能「ラムダ式」を次期Visual Studioでいち早く試す
  17. .NETでマンデルブロ集合を描く
  18. .NETでマンデルブロ集合を描く(後日談)
  19. C++/CLI : とある文字列の相互変換(コンバージョン)
  20. インテルTBBによる選択ソートの高速化
  21. インテルTBB3.0 によるパイプライン処理
  22. Visual C++ 2010に追加されたSTLアルゴリズム
  23. Visual C++ 2010に追加されたSTLコンテナ「forward_list」
  24. shared_ptrによるObserverパターンの実装
  25. .NETでマンデルブロ集合を描く(番外編) ── OpenCLで超並列コンピューティング
  26. StateパターンでCSVを読む
  27. 状態遷移表からStateパターンを自動生成する
  28. 「ソートも、サーチも、あるんだよ」~標準C++ライブラリにみるアルゴリズムの面白さ
  29. インテルTBBの同期メカニズム
  30. なぜsetを使っちゃいけないの?
  31. WPFアプリケーションで腕試し ~C++でもWPFアプリを
  32. C++11 : スレッド・ライブラリひとめぐり
  33. Google製のC++ Unit Test Framework「Google Test」を使ってみる
  34. メールでデータベースを更新するココロミ
  35. Visitorパターンで遊んでみたよ
  36. Collection 2題:「WPFにバインドできる辞書」と「重複を許す検索set」
  37. Visual C++ 2012:stateless-lambdaとSQLiteのぷち拡張
  38. 「Visual C++ Compiler November 2012 CTP」で追加された6つの新機能

@IT

  1. Vista時代のVisual C++の流儀(前編)Vista到来。既存C/C++資産の.NET化を始めよう!
  2. Vista時代のVisual C++の流儀(中編)MFCから.NETへの実践的移行計画
  3. Vista時代のVisual C++の流儀(後編) STL/CLRによるDocument/Viewアーキテクチャ
  4. C++開発者のための単体テスト入門 第1回 C++開発者の皆さん。テスト、ちゃんとしていますか?
  5. C++開発者のための単体テスト入門 第2回 C++アプリケーションの効率的なテスト手法(CppUnit編)
  6. C++開発者のための単体テスト入門 第3回 C++アプリケーションの効率的なテスト手法(NUnit編)

AWARDS


Microsoft MVP
for Visual Developer - Visual C++


Wankuma MVP
for いぢわる C++


Nyantora MVP
for こくまろ中国茶

Xbox

Links

記事カテゴリ

書庫

日記カテゴリ

「C++テンプレートテクニック」もくじ

隠しておくことじゃないし。
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のまとめ

投稿日時 : 2009年4月14日 21:46

コメントを追加

# re: 「C++テンプレートテクニック」もくじ 2009/04/14 22:59 倉田 有大

ハァハァ
C++使ってたら、すげーほしいw

>C++0xにおけるテンプレート

うわーお。

>スレッドライブラリ

ど、どんなのだー

C++またやりたくなってきたな~
C#&WPFで出番が><

# re: 「C++テンプレートテクニック」もくじ 2009/04/15 10:08 n

思ってたより内容が濃いそ~

# re: 「C++テンプレートテクニック」もくじ 2009/04/15 10:23 επιστημη

えぇ、"こゆい"っすよ。
トリッキー/アクロバティックなワザが
みっしり詰まってます。

# re: 「C++テンプレートテクニック」もくじ 2009/04/15 10:55 インドリ

あかん。涎が出てきた。
早く届かないかなー♪
待ちきれないぃー

# re: 「C++テンプレートテクニック」感想 2009/04/26 22:21 n

今日届きました。
早速、読ませて頂いています。
現時点で、chapter 5 まで読み終えました。

それとなくは知っている内容だったので、すぐに理解できました。
chapter 3 のテンプレートコンストラクタで friend にしないといけないってのは、一瞬「え?」と思いました。
考えてみれば、 Point<int> と Point<long>はまったく別物なんだから、当たり前のこと・・・

Range-baseのアルゴリズムの作り方も「なるほど」と感心させられました。

# re: 「C++テンプレートテクニック」もくじ 2009/04/26 22:36 επιστημη

わざわざご感想ありがとうございます。
テンプレートにまつわるテクニックについて
はあらかた網羅していることと思います。
「その手があったか!」と膝を打っていただければ幸甚。

タイトル  
名前  
URL
コメント