デフォルトのテンプレート引数を使用したクラス テンプレートの明示的な引数仕様の克服
C 11 では、最初に混乱を引き起こした概念であるデフォルトのテンプレート引数が導入されました。この記事では、このトピックについて詳しく掘り下げ、「Foo me;」などのデフォルトのテンプレート引数を持つクラス テンプレートのインスタンスが main で無効である理由を説明します。
デフォルトのテンプレート引数を持つ次のクラス テンプレートを考えてみましょう。 of int:
template <typename T = int> class Foo {};
デフォルトのテンプレート引数が存在するにもかかわらず、コード「Foo me;」 main ではコンパイルエラーが発生します。これは、デフォルトのテンプレート引数を明示的に指定するには、「Foo<> me;」のような空の山かっこが必要であるためです。
この要件の背後にある理由は、関数呼び出しで一貫した構文が必要であるためです。 C では、デフォルトの引数を持つ関数では、デフォルト値が使用されている場合でも、引数の構文が存在する必要があります。このルールは、デフォルトのテンプレート引数を持つクラス テンプレートに拡張され、言語構文の一貫性が確保されます。
以上が\'Foo me;\' が C 11 のデフォルトのテンプレート引数で機能しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。