ホームページ > バックエンド開発 > C++ > \'Foo me;\' が C 11 のデフォルトのテンプレート引数で機能しないのはなぜですか?

\'Foo me;\' が C 11 のデフォルトのテンプレート引数で機能しないのはなぜですか?

Barbara Streisand
リリース: 2024-11-04 14:02:02
オリジナル
400 人が閲覧しました

Why Does

デフォルトのテンプレート引数を使用したクラス テンプレートの明示的な引数仕様の克服

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

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