「typename」キーワードはどのような場合に必要ですか?
C では、「typename」キーワードは、依存しているネストされた名前を明確にするために使用されます。テンプレートパラメータについて。
例で「typename」が必要な理由code?
コード例では、ネストされた構造体 P を持つクラス C を定義します。メンバー関数 f() 内の行:
typename vector<P>::iterator p = vec.begin();
では、「typename」を使用する必要があります。 " なぜなら:
は、クラス C のテンプレート パラメーター K に依存するネストされた名前です。
::iterator が型であるか、または型であるかを判断できません。テンプレート。
「typename」が必要:
「typename」は次の状況でも必要です:
template<typename T> class A { public: void f(typename T::P& p); // Requires "typename" };
template<typename T> class A { public: template<typename U> void g(typename T::template F<U>& f); // Requires "typename" };
template<typename T> class A { public: template<> void g<int>(typename T::F<int>& f); // Requires "typename" };
一般に、依存するネストされた名前を参照する必要がある場合は常に、 「typename」キーワードは、テンプレートからタイプを明確にするために必要です。
以上がC テンプレートで `typename` キーワードが必要になるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。