テムプレートってどういうときに使うんでつか?
難しすぎて頭がおかしくなります。
たとえば1から100まで足すプログラムに使いませんよね?
使えますが
116 :
デフォルトの名無しさん:04/02/22 21:18
#include <iostream>
template <int n> struct Sum {
enum { X = Sum<n-1>::X + n };
};
template<> struct Sum<1> {
enum { X = 1 };
};
int main()
{
std::cout << Sum<100>::X;
return 0;
}
テンプレートを使いこなしたかったら Modern C++ Design を読むべし、そうしなければ全く始まらない。
テンプレートはOOその他従来のパラダイムのように、プログラムを書くための物ではない(もちろん使えるが、そういうやり方は古いやり方)
Modernなテンプレートプログラムとは、プログラムを生成するプログラムを書くのだ。
例えばデザインパターンのパターンを見て、そのパターンを実装するのが従来のやり方。
テンプレートを使う場合は、そのパターンを生成するプログラムを書くのだ。
一つ上のステージからプログラムを見下ろす様にプログラムをするんだ。
>>115-116 それは1から100まで足すプログラムというより、
1から100まで足してある数値を取り出すプログラムでは?
実行時に足すかコンパイル時に足すかの違いでしかない。
コンパイラに足させるプログラム
template<int i> class sum
{
public:
int operator() {
return i + sum<i - 1>()();
}
};
template<> class sum<1>
{
public:
int operator() {
return 1;
}
};
じゃあこうすれば良いのか