コンストラクターがテンプレート関数になる機能があるにもかかわらず、C 03 標準では、テンプレート パラメーターを明示的に指定する構文が提供されていません。代わりに、コンパイラーは、指定された引数に基づいてこれらのパラメーターを自動的に決定します。
次の例を考えてみましょう:
struct A { template<typename T> A() {} };
このクラスをインスタンス化する場合、テンプレート パラメーターを明示的に指定することはできません。代わりに、コンパイラに依存して、コンストラクターに渡された引数から推論する必要があります:
A<int> a; // Constructs an A object with template value int
C 03 標準では次のように明示的に規定されています:
[注: 明示的なテンプレート引数リストがあるためです。は関数テンプレート名の後に続き、変換メンバー関数テンプレートとコンストラクター メンバー関数テンプレートは関数名を使用せずに呼び出されるため、これらの関数テンプレートに明示的なテンプレート引数リストを提供する方法はありません。] (§14.5.2/5)
コンパイラーが正しいテンプレート パラメーターを決定できない場合、この制限によりデバッグ作業が妨げられる可能性があります。明示的なパラメーターを指定すると、エラー メッセージが強化され、問題が解決される可能性があります。ただし、C 03 標準ではサポートされていません。
以上がC 03 のコンストラクターでテンプレート パラメーターを明示的に指定できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。