ホームページ  >  記事  >  バックエンド開発  >  C 03 のコンストラクターでテンプレート パラメーターを明示的に指定できますか?

C 03 のコンストラクターでテンプレート パラメーターを明示的に指定できますか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-18 04:55:01929ブラウズ

Can You Explicitly Specify Template Parameters in Constructors in C  03?

コンストラクターでの明示的なテンプレート パラメーターの指定

コンストラクターがテンプレート関数になる機能があるにもかかわらず、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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。