これは、コンパイラ内部の観点からの質問です。
テンプレート(C ++)ではなくジェネリックに興味があるため、質問にC#を付けました。なぜなら、両言語のジェネリックは実装が異なるためです。
ジェネリックなしの言語を見ると、非常に簡単です。クラス定義を検証し、階層に追加するだけです。
しかし、ジェネリッククラスをどうするか、さらに重要なことには、それへの参照をどのように処理するのでしょうか?インスタンス化ごとに静的フィールドが特異であることを確認する方法(つまり、ジェネリックパラメーターが解決されるたびに)。
私は電話を見たとしましょう:
var x = new Foo<Bar>();
Foo_Bar
階層に新しいクラスを追加しますか?
更新:これまでのところ、関連する投稿は2つしか見つかりませんでしたが、「自分でどうやってやるのか」という意味ではあまり詳しくありません。