もう、ダウンキャストを無くすためだけのテンプレートじゃありません。
Byerkut さんのお気に入り関数 assert() 。しかしながら、これの出力は式になってしまうので意味を理解するのにちょっと時間がかかります。これにエラーメッセージを渡して意味を伝えやすくしようというテクニックとのことです。
たとえば交通費なんかをプログラムで管理する時に int 型に放り込んでしまうことがよくあるのですが、「交通費 is a 整数」というのが乱暴すぎないか?という指摘があります。
コレクションというのは配列や可変長配列、リストやハッシュやマップやスタックといったデータを保存するデータ構造のことです。クラスで実装されています。…と、まぁ、 Java や C# をお使いの方にはおなじみのものです。 C++ では STL がそれに近いです。
たぶん、モダンさだけなら結構なセンの .NET 系の命名規約(名前に関するガイドライン)が MSDN にありました。命名規約はもっぱら「何かを参考にしたい」人にはお勧めです。
クラスのメンバ変数を mMember や member_ のように命名することがあります。これには可読性を向上させる目的の他に、「きっとこうしないと初期化するときコンパイルが通らないんだろうなぁ」という心配があったのですが…
やっぱり、あんまり良い本がありませんでした。
さも、C言語の使い手であるかのように振る舞っているが実は!?的な方には待望の一冊かもしれません。はい、私のためにある本です。
C++ のコレクションと言えば STL ですが、種類や機能やアクセス方法など他の言語と比較しても遜色ないラインナップのため魅力に不足など考えたこともありませんでした。しかし、世の中にはもっと面白い集合操作技術があるものです。
Java 使いの後輩から、「先輩、 Generics って何が良いんですか?」と訊かれて答えに窮した結果、「コレクションからデータを出すときにダウンキャストしなくて済むんだよ、後はググれッ!」と言ってしまいました。難しいんですよね、メタプログラミング。何か良い本買って勉強せねば…