...ing logging 4.0

はてなブログに移行しました。D言語の話とかいろいろ。

C++テンプレートを使いこなす! 予告編

周りを見渡してみると,Cでもbetter CでもないC++を語り合える人がほとんどいません.ほとんどの人は学校でCを勉強した後,研究などでC++(ほとんどVC++)をbetter Cとして使って終わりか,C++をやめて他の言語に行ってしまいます.JavaとかC#とかね.C++はたくさんの面倒な決まり事があるため,ある程度プログラミングに慣れてくると嫌になってくるからしょうがない部分もありますけど.特にヘッダーを自分でincludeするのが面倒すぎます(コンパイル時間短縮のため,ライブラリのincludeはしょうがないかな).一緒にコンパイルしてる他のソースファイル中にあるシンボルくらい自動的に取り込んで欲しいものです.

そんなC++ですが,C++の世界はSTLを学ぶと劇的に変化します.コンテナ,イテレータアルゴリズム,アダプタ,関数オブジェクトなどを駆使することで,抽象度の高いプログラムを簡潔に書くことができるようになります.これらを実現する要となるのが,テンプレートというものです.同じような思想を基にしてJavaC#にもGenericsというものが導入されたことからもわかるように,とても有用な機能です.さあ,準備はいいですか.それでは,C++の深遠に繋がる道,テンプレートの世界を覗いてみましょう!

C++テンプレートを使いこなす!(予定)

第一部

(1) 似通った関数を関数テンプレートで一つにまとめよう
(2) テンプレートはヘッダーに書こう
(3) 特定の型だけ別に扱いたいときは特殊化しよう
(4) 部分特殊化を知ろう
(5) テンプレート引数に与えられるのは型だけじゃない
(6) テンプレートは高機能なマクロ
(7) クラステンプレートで似たクラスをまとめよう
(8) メンバ関数テンプレートは仮想関数にできません
(9) テンプレートコンストラクタはコピーコンストラクタになりません
(10) ソースコードの短縮と生成バイナリの増大というジレンマ
(11) テンプレートのインライン展開を考える

第二部

(12) ファンクタ(Functor)は関数のように振舞うクラス
(13) やっぱりテンプレートは高機能なマクロ
(14) Policy(ポリシー)という考え方を知ろう
(15) クラスの機能をPolicyに分割しよう
(16) ポリモーフィズムとテンプレートの相補的な関係
(17) Traits(特性)という考え方を知ろう
(18) 要求する型の情報はTraitsとして示そう

      • -

# ところで興味ある人いるんだろうか?