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 サイトの他の関連記事を参照してください。