C 17 の部分テンプレート引数演繹
クラス テンプレート引数演繹 (CTAD) が C 17 で導入され、コンパイラーが自動的に演繹できるようになりました。関数の引数の型に基づくテンプレート引数。ただし、CTAD では現在、すべてのテンプレート引数を推定するか、明示的に指定する必要があります。テンプレート引数を部分的に指定し、残りの引数を推測させることは可能ですか?
次の例を考えてみましょう:
1 2 3 4 5 6 7 8 9 10 |
|
CTAD を使用すると、コンパイラは val の型が Base< であると正しく推測します。 ;int、double、bool>。ただし、次の例のように、テンプレート引数を部分的に指定したい場合はどうすればよいでしょうか?
1 2 |
|
残念ながら、このコードはコンパイルされません。コンパイラでは、すべてのテンプレート引数が推定されるか、明示的に指定される必要があるためです。 .
回避策
部分 CTAD は直接サポートされていないため、使用できる回避策がいくつかあります。
1 2 3 4 5 |
|
結論
部分 CTAD は C 17 では直接サポートされていませんが、同様の機能を実現するために利用できる回避策があります。次期 C 20 標準には、エイリアス テンプレートを使用した CTAD のサポートが含まれる予定ですが、現時点では部分 CTAD または継承されたコンストラクターを使用した CTAD のサポートは含まれていません。
以上が## C 17 はクラス テンプレート引数演繹 (CTAD) でテンプレート引数を部分的に演繹できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。