ホームページ  >  記事  >  バックエンド開発  >  ## C 17 は部分的なクラス テンプレートの引数の演繹を達成できますか?

## C 17 は部分的なクラス テンプレートの引数の演繹を達成できますか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-25 06:20:28261ブラウズ

## Can C  17 Achieve Partial Class Template Argument Deduction?

C 17 の部分的なクラス テンプレート引数の演繹

C 17 では、クラス テンプレート引数の演繹 (CTAD) により、クラス テンプレート引数の演繹 (CTAD) により、引数に渡される引数に基づいてテンプレート引数を演繹できます。関数またはコンストラクター。ただし、このプロセスでは現在、引数をすべて指定するか、まったく指定する必要がありません。

テンプレート引数を部分的に指定し、残りの引数を推定できるかどうかという疑問が生じます。例:

<code class="cpp">Base<V = bool> val1(1, 4.);        // U & V deduced --> Base<int, double, bool>
Base<T = bool, T =int> val2(5.);  // V deduced     --> Base<bool, int, double></code>

ただし、次のようなエイリアス テンプレートを使用してこれを実現しようとすると、コンパイル エラーが発生します。

<code class="cpp">template<class T, class U> using Base2 = Base<T, U, double>;

void func() {
    NewBase2 val(1, 2);
}</code>
現在、CTAD一部控除には対応しておりません。この機能を提案した論文 P1021R0 は受理されていません。ただし、C 20 にはエイリアス テンプレート (P1814) および集約 (P1816) のサポートが含まれる場合があり、これにより回避策が提供される可能性があります。

以上が## C 17 は部分的なクラス テンプレートの引数の演繹を達成できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。