>>764
ようするに型に関係ないコードを書くことだ。とりあえずそう思えばいい。

たとえばCで平方を返す関数を自分で書くとする。
するとこんな風に中身は全く同じなのに型の違いで幾つもの関数を作らなければならない。
int square(int n) {return n * n;}
long lsquare(long n) {return n * n;}
double fsquare(double n) {return n * n;}

なんでこんな無駄なことをしなければならないのか?
それはCがデータを型に縛りつける言語だからだ。
ならばその型への縛りを少し緩めてやればよいという発想に到る。

そこでC++はパラメタライズドタイプとしてテンプレートを導入した。
template<typename T>
T square(T n) {return n * n;}

そして「データ構造 + アルゴリズム = プログラム」と言われることから、
型に囚われずにコードを書く→データ構造を考えない
→プログラムからデータ構造を取っ払ったらアルゴリズムだけしか残らない(はずだ)

だから純粋にアルゴリズムだけを書くのがジェネリックプログラミングだという結論に到ってしまう。