テンプレート パラメーターに「class」と「typename」を使用する必要があるのはどのような場合ですか?

Barbara Streisand
リリース: 2024-11-24 19:00:24
オリジナル
266 人が閲覧しました

When Should You Use `class` vs. `typename` for Template Parameters?

テンプレート パラメーターの 'class' と 'typename' のどちらかを選択する

C では、関数またはクラス テンプレートを宣言するときに、次のように使用できます。 class T または typename T を使用してテンプレートをパラメータ化します。ここで疑問が生じます: 一方の形式を他方よりも優先するやむを得ない理由はありますか?

等価性と構文

クラス T と型名 T は通常、どちらも等価です。コンパイラの視点。ただし、C 17 以降では、ネストされたテンプレート テンプレート パラメーターを指定するときにキーワード typename を使用することが厳密に推奨され、そのような場合にクラスを使用するという以前の要件が効果的に置き換えられます。

使用設定

一部のプログラマーは、基本的に同等であるにもかかわらず、さまざまな用途に一貫して typename または class を使用することを好みます。理由:

  • TypeName 設定:

    • パラメーターが型であることを明示的に示すことで、明確さを高めます。
  • クラス設定:

    • typename の導入より前のレガシー コードとの互換性を維持します。
  • 二重使用:

    • 一部のプログラマーはテンプレート型に typename を使用しますおよびテンプレート テンプレート パラメータのクラス。これは、歴史的な命名規則に準拠しています。
  • 優先なし:

    • その他は単にこの 2 つの間に意味のある違いが見つかりませんForms.

歴史的背景

クラスと型名の区別は、C テンプレートの進化の中で現れました。当初はクラスのみが使用されていましたが、潜在的な混乱を懸念して、特にテンプレート タイプを指定するための別個のキーワードとして typename が作成されました。ただし、下位互換性が失われるのを避けるため、この目的ではクラスの使用が引き続き許可されました。

結論として、クラスと型名の両方はほとんどの実用的な目的では同じ意味で使用できますが、どちらを選択するかは個人の好みに依存することがよくあります。または特定の慣例の遵守。最新の C 17 リビジョンでは、ネストされたテンプレート テンプレート パラメーターの typename の推奨使用法が明確になり、これらの複雑な構造に対して一貫性のある曖昧さのない構文が保証されます。

以上がテンプレート パラメーターに「class」と「typename」を使用する必要があるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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