デフォルトの引数を使用してクラス テンプレートの引数を指定する必要があるのはなぜですか?

Linda Hamilton
リリース: 2024-11-04 04:56:30
オリジナル
818 人が閲覧しました

Why Do I Still Need to Specify Arguments for a Class Template with Default Arguments?

C のデフォルトのテンプレート引数を理解する : 指定された引数を避ける

C プログラミングでは、デフォルトのテンプレート引数を使用してクラス テンプレートを宣言できます。 。ただし、特定のシナリオで依然として引数の指定が必要な理由を理解するのは混乱する可能性があります。

元の質問:

次のクラス テンプレートを考えてみましょう:

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

質問によると、次のコードは許可されるはずです:

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

しかし、代わりに次のコードが必要です:

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

回答:

C 17 より前では、クラス テンプレート宣言でデフォルトの引数を使用して引数を指定することが必須でした。つまり、次のコードが必要でした。

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

テンプレート引数が明示的に指定されていない場合でも、空の山括弧

>デフォルトの引数が使用されていることを示すために存在する必要があります。この構文は、空のかっこ () を必要とする単一のデフォルト引数を使用した関数の呼び出しに似ています。

C 17 更新:

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

C 17 では、この動作が変更されました。 、山括弧 <> を省略できるようになりました。デフォルトのテンプレート引数を使用する場合。したがって、次の代替構文が許可されるようになりました:

結論:

デフォルトの引数を持つクラス テンプレートで引数を指定する要件を理解するには、歴史的な構文に精通している必要があります。 C の進化。 C 17 より前のバージョンでは、明示的な山かっこ <>は必須でしたが、C 17 では、デフォルトの引数を使用するときに省略できる、より便利な構文が導入されました。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!