C がテンプレート テンプレート テンプレート パラメータを処理できないのはなぜですか?

Mary-Kate Olsen
リリース: 2024-11-02 19:08:31
オリジナル
751 人が閲覧しました

Why Can't C   Handle Template Template Template Parameters?

テンプレート テンプレート パラメーターについて

C の領域では、テンプレート テンプレート パラメーターが一部のプログラマーにとって課題となります。よくある誤解を払拭してみましょう:

誤解:

以下のコード スニペットでは、C が Z をテンプレート化されたパラメーターではなく別のテンプレート化されたクラスとみなすことを妨げているのは何ですか?
<code class="cpp">template<class T>
class B {}; // Templated class

template<template<class X> class Z = B> // Line in question
class BB{};</code>
ログイン後にコピー

説明:

テンプレート テンプレート パラメーターは、通常のテンプレート タイプ パラメーターと同様に動作します。ただし、具体的な型は受け入れられません。代わりに、テンプレート自体を受け入れます。簡単に理解すると次のようになります。

  • テンプレート タイプ パラメータ: 具体的な型 (例: int、double、Foo など) と一致します。
  • テンプレート テンプレートパラメータ: テンプレート (つまり、テンプレート パラメータを持つクラスまたは構造体) を照合します

この例では、構文 template が使用されます。クラス Z = B> 1 つのテンプレート パラメーター X を持つテンプレート クラスを予期するテンプレート型パラメーター Z を定義します。

テンプレート テンプレート テンプレート パラメーター (不可能)

テンプレート テンプレートに注意することが重要です。テンプレートパラメータは C では使用できません。これは、コンパイラーの実装を簡素化するために標準化委員会によって行われた設計上の決定です。

類似: 関数と関数ポインター

よりよく理解するために、関数と関数の類似点を描いてください。ポインタ:

  • 関数: 引数として値を受け入れる
  • 関数ポインタ: 値を受け入れる関数 (引数) を受け入れる

同様に、テンプレート テンプレート パラメーターは、引数を受け入れるテンプレート (引数) を受け入れます。

例と使用例

テンプレート テンプレート テンプレート パラメーターは使用できませんが、これらが役立つ状況を想像してみましょう:

さまざまなタイプのスタックまたはキューで動作するアルゴリズムを備えた汎用グラフ検索ライブラリを作成したいとします。これらは、さまざまなコンテナ タイプで実装できます。テンプレート テンプレート テンプレート パラメーターを使用すると、単一の関数呼び出しでこれらすべての側面を指定できるようになります。ただし、テンプレート テンプレート テンプレート パラメーターは使用できないため、この使用例は架空の例のままです。

以上がC がテンプレート テンプレート テンプレート パラメータを処理できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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