他の実装との違い
Microsoft 固有の仕様 →
次の一覧では、Microsoft C++ とその他のコンパイラとの相違点をいくつか示します。
コンパイラは、テンプレートが定義されたモジュールの外部にあるテンプレートをインスタンス化できません。 Visual C++ は export キーワードをサポートしません。
テンプレートは、__declspec (dllimport) または __declspec (dllexport) で宣言された関数と共に指定できません。
すべてのテンプレート引数は、テンプレート パラメーター リストの型と正確に一致する明確な型である必要があります。 次に例を示します。
template< class T > T check( T ); template< class S > void watch( int (*)(S) ); watch( check ); //error
コンパイラは、check テンプレート関数を int check( int ) の形式でインスタンス化する必要がありますが、推論を続行できません。
クラス テンプレートまたは関数テンプレートで使用される名前を解決するときは、すべての名前が依存名として扱われます。 「依存する型の名前解決」を参照してください。
クラス テンプレートでは、テンプレート パラメーターはクラス定義のスコープ内で再定義できます。 「ローカルに宣言された名前の名前解決」を参照してください。