C でデフォルトのテンプレート引数を使用する場合でもテンプレート引数を指定する必要があるのはなぜですか?

Patricia Arquette
リリース: 2024-11-04 17:21:01
オリジナル
296 人が閲覧しました

Why Do I Still Need to Specify Template Arguments When Using Default Template Arguments in C  ?

C でのデフォルトのテンプレート引数の使用について理解する

質問:

クラス テンプレートを次のように定義できるにもかかわらず以下に示すデフォルトのテンプレート引数:

<code class="cpp">template <typename T = int>
class Foo {
};</code>
ログイン後にコピー

次の例でクラスをインスタンス化するときにテンプレート引数を指定する必要があるのはなぜですか?

<code class="cpp">Foo<int> me;</code>
ログイン後にコピー

回答:

質問の内容とは異なり、デフォルトのテンプレート引数を使用してクラス テンプレートを定義する場合、テンプレート引数を明示的に指定する必要はありません。 C 17 では、次のコードが有効です:

<code class="cpp">Foo me;</code>
ログイン後にコピー

C 17 より前では、次の構文が必要でした:

<code class="cpp">Foo<> me;</code>
ログイン後にコピー

これは、テンプレート引数が次のとおりである必要があることを意味します。たとえ空であっても存在します。この動作は、単一のデフォルト引数を使用して関数を呼び出すことに似ています。foo() と引数なしの foo は両方とも有効な式ですが、前者のみが関数を呼び出します。

デフォルトのテンプレート引数を導入することで、C 11テンプレート パラメーターのデフォルト値を設定する方法を提供することで、クラス テンプレートの操作が容易になりました。さらに、C 11 と C 17 の間の動作の変更で示されているように、この構文は使いやすさを向上させるために時間の経過とともに進化してきました。

以上がC でデフォルトのテンプレート引数を使用する場合でもテンプレート引数を指定する必要があるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート