9

クラスがある場合:

template <typename T>
class MyClass
{ 
 // ...
};

そして私はそれを明示的にインスタンス化します:

template class MyClass<int>;
template class MyClass<int>; // second time

一部のコンパイラでエラーが発生します (たとえば Clang ですが、VC++ 2010 では発生しません)。なぜ私はこれをしたいのですか?まあ、場合によっては別のタイプにTなるかもしれません。typedef

template class MyClass<my_type_1>;
template class MyClass<my_type_2>;

特定のビルド オプションでmy_type_1は、と同じですが、my_type_2それ以外の場合は異なります。上記がすべてのシナリオでコンパイルされることを確認するにはどうすればよいですか? 重複したインスタンス化を無視する方法はありますか?

4

5 に答える 5

2

構成のプリプロセッサ フラグを定義してから、テンプレートを#ifdefブロック内に配置できます。

于 2013-06-18T17:31:00.620 に答える