お久しぶりです。みやじーです。![]()
今日は、最近はまっている”C++のテンプレート”についてお話したいと思います。![]()
標準C++ライブラリのvectorやlistなどでテンプレートを使ったことのある方も多いと思いますが、
実は、テンプレートを駆使するとコンパイル時にいろいろと特殊なことができます。
なかでも面白いのが、コンパイル時に型の特性を判断するというものです。![]()
簡単な例として
以下のようにプログラムすると、型がポインタ型かどうか判別できます。
(注)ここでテンプレートの部分特殊化という機能を用いています。
詳しくは http://www.geocities.jp/ky_webid/cpp/language/037.html
#include <stdio.h>
template<typename T>
struct IsPointer
{
static const bool value = false;
};
// 部分特殊化
template<typename T>
struct IsPointer<T*>
{
static const bool value = true;
};
int main()
{
printf(“int is %s pointer.\n”, IsPointer<int>::value ? “” : “not”);
printf(“int* is %s pointer.\n”, IsPointer<int*>::value ? “” : “not”);
return 0;
}
上記のような型の特性を調べるテンプレートを組み合わせることで、
コンパイル時に型の継承関係などを調べることができます。![]()
このようなテンプレートの使い方に関しては
“C++テンプレートテクニック”という本がコンパクトにまとまりつつも、深くまで踏み込んでいてお勧めです。![]()
http://www.amazon.co.jp/dp/4797354534
うーん。テンプレートの世界は奥が深いなぁ。![]()
BLOG
NEWS
-
2025.12.17インフォメーション年末年始休業のお知らせ
-
2025.11.28プレスリリース完全新作和風ホラーアドベンチャー 『■■ノニラヤ』が正式リリースされました
-
2025.11.27インフォメーション■■ノニラヤの配信用素材を配布しています
-
2025.11.20インフォメーションプレスリリース完全新作和風ホラーアドベンチャー 『■■ノニラヤ』の価格が決定。 未公開映像を含むファイナルトレーラーも公開。
-
2025.11.5インフォメーションプレスリリース■■ノニラヤの「読経オーディション」の結果発表
-
2025.10.1プレスリリース弊社が手掛ける新作和風ホラーゲーム「■■ノニラヤ」の発売日が決定しました