「typename」キーワードの構文
「typename」キーワードは、依存する名前であるネストされた名前を参照するときに C で使用されます。これは、不明なパラメーターを持つテンプレート インスタンス内にネストされていることを意味します。このキーワードは、特に推論されたエンティティ (値、型、またはテンプレート) があいまいな場合に、名前が型を表すことを明示的に指定します。
ネストされた名前での "typename" の使用
次のコード スニペットを考えてみましょう:
template<class K> class C { struct P {}; vector<P> vec; void f(); }; template<class K> void C<K>::f() { typename vector<P>::iterator p = vec.begin(); }
ここでは、「typename」キーワードが必要ですp を型、つまり P 構造体のベクトルの反復子として宣言します。 "typename" がないと、コンパイラはシーケンス ベクトル
::iterator を値または関数を表す式として解釈し、これは正しくありません。
"typename" が必要な追加のケース
ネストされた名前とは別に、以下では「typename」キーワードも必要ですシナリオ:
以上がC テンプレートで「typename」キーワードが必要な場合となぜ必要ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。