可変引数テンプレート関数で decltype を使用するトレーリング戻り型
この調査では、任意の数の合計を計算する基本的な加算器を構築しようとします。適切な戻り値の型を持つ引数。ただし、現在の実装には複数の引数に関する制限があります。この記事では、根本的な問題を調査し、考えられる回避策を検討します。
最初の実装では、末尾の戻り値の型構文を利用して、合計関数を簡素化しています。ただし、引数が 2 つを超える場合は、関数が未定義であることを示すコンパイル エラーが発生します。この異常は、戻り値の型が指定された後に可変個引数関数テンプレートが宣言されるという事実に起因します。結果として、decltype() 式は可変引数関数テンプレート自体を参照できません。
C 0x では ->decltype(expr) 部分での再帰呼び出しが可能ですが、このような特定のシナリオはサポートされない可能性があります。 。これに対処するために、回避策としてカスタム特性クラス sum_type が導入されました。これにより、decltype を typename sum_type
ただし、最初の実装では、予期されたものではなく decltype((a b) c) が返されます。 decltype(a (b c))。これを修正するには、sum_type の特殊化を変更して、目的の操作順序を確保し、最終的な解決策を導き出すことができます。
以上が合計用の可変個引数テンプレート関数を使用して末尾の戻り値の型を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。