クラス内にコンストラクター テンプレートを作成できるにもかかわらず、コンパイル プロセスでは通常、引数からテンプレート パラメーターが推論されます。提供された。ただし、そのようなコンストラクターでテンプレート パラメーターを明示的に指定できる構文が存在するかどうかについては疑問が生じます。
例として次の構造を考えてみましょう。
struct A { template<typename T> A() {} };
次のような疑問が生じます。この構造体をインスタンス化しますか?それともコンストラクターのテンプレート パラメーターを明示的に定義しますか?
実際には、コンパイラーが失敗するシナリオが発生する可能性があります。正しいテンプレート化されたコンストラクターを特定する必要があるため、問題が発生する可能性があります。明示的なテンプレート パラメータの指定により、エラー レポートが強化されたり、問題が解決される可能性もあります。
回答:
残念なことに、C 03 標準は明確な回答を提供しています:
「変換メンバー関数テンプレートとコンストラクターメンバー関数テンプレートは関数名を使用せずに呼び出されるため、明示的なテンプレートを提供する方法はありません。これらの関数テンプレートの引数リスト。」 (§14.5.2/5)
本質的に、コンストラクター定義でのテンプレート パラメーターの明示的な指定は、C 03 標準ではサポートされていません。
以上がコンストラクター定義でテンプレート パラメーターを明示的に指定できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。