ここでこの記事を見ると、最後の行のジェネリックへの参照は、ジェネリックがインターフェイスとデリゲートを備えたC ++/CXで使用されていることを示しています。
http://msdn.microsoft.com/en-us/library/windows/apps/br212455(v=vs.110).aspx
これは、C ++ / CXコンパイラが実際のオブジェクトのネイティブコード関数をコンパイルし、C++テンプレートと同様の方法でジェネリックインターフェイスを使用できるようにするインターフェイスとして定義されているため意味があります。関数のネイティブコードがコンパイルされ、汎用インターフェイスを使用してさまざまなタイプを操作します。
コンパイラにとって、これはC ++/CLRとC++/CXの違いのようです。/ clr:ジェネリッククラス、インターフェース、デリゲートが許可されます。/ ZW:汎用インターフェースとデリゲートのみ。
ここhttp://msdn.microsoft.com/en-us/library/windows/apps/hh699870(v=vs.110).aspxを見ると、クラスに一般的なルールがないことがわかります。
ただし、このトピックhttp://msdn.microsoft.com/en-us/library/windows/apps/hh755792(v=vs.110).aspxを読むと、ジェネリックがインターフェイスとして適用されていることがわかります。
C ++ / CXの「ジェネリッククラス」は、標準のC++テンプレートを使用して実現されます。インスタンス化またはコンパイラが生成した特定のタイプのジェネリックはメタデータにエクスポートされますが、テンプレート自体にはエクスポートされません。したがって、メタデータからMyClassとMyClassを確認できますが、元のMyClassは表示できません。これは、ジェネリック型としてメタデータにエクスポートされるジェネリックインターフェイスの場合には当てはまりません。
これに関する詳細は、http://en.wikipedia.org/wiki/Windows_Runtimeにあります。
したがって、質問に完全に答えるために、現時点では、メソッドのコードは出力dllまたはexeのプリコンパイルされたネイティブコードであり、実際の非ジェネリッククラスにアタッチされています。ただし、コードはジェネリックインターフェイスを使用してジェネリックに使用できます。したがって、10個の異なるクラスがIMyInterfaceを実装でき、次にタイプIMyInterfaceの変数を使用して、たとえば10個の異なるタイプのインスタンスを操作できます。
したがって、簡単な答えは、C ++/CLRにあるようなC++/CXの完全なジェネリッククラスのようなものはないということです。C ++/CXアプリケーションで同じ効果を得るにはテンプレートを使用してください。C ++ジェネリックが必要な場合は、C ++ / CLIで作成されたdllを使用し、C ++/CXとしてコンパイルされたプログラムからそのコードを処理します。
ノート!さまざまな記事を調べてこれだけ収集しましたが、msdnの記事の中には、変更される可能性があると言っているものもあります。
テンプレートを使用してC++/ CXで汎用インターフェイスを使用することは、おそらく彼らが意図していることです。したがって、MyClassというテンプレートを作成してから、MyInterfaceというジェネリックインターフェイスを実装します。したがって、MyClassテンプレートのインスタンス化を行うと、新しいタイプは自動的にMyInterfaceを実装し、このインターフェイスはどこでも使用できます。したがって、コンパイルされたdllとヘッダーファイルの外部では、他のC ++ / CXモジュールとファイルはヘッダーファイルを必要とせずにMyInterfaceのようなタイプで動作できます。これは、テンプレートのインスタンス化がコンパイルされたdll内にあったためですが、メタデータを使用するc++ファイルはその方法を知っています。 MyInterfaceのメタデータはあるが、MyClassのメタデータはないので、MyInterfaceタイプを作成します。
非常に簡単に言えば、ジェネリッククラスはなく、C ++ / CXのジェネリックインターフェイスとデリゲートサポートは、C ++/CLIのジェネリックのように実際に機能するすべてです。