非型テンプレート パラメーターと定数積分式
非型テンプレート パラメーターはテンプレートをカスタマイズするための貴重なツールですが、なぜ重要なのでしょうかそれらは定数整数式であると考えられますか?
次のことを考えてください。コード:
template <std::string temp> void foo() { // ... }
このコードをコンパイルすると、次のエラーが発生します:
error C2993: 'std::string' : illegal type for non-type template parameter 'temp'.
型以外のテンプレート パラメーターは、コンパイル中に評価されるため、定数の整数式である必要があります。これにより、実行時評価を行わずに直接コードを生成できます。 std::string のような型は実行時に変更される可能性があり、コンパイル時に置き換えることはできません。
標準では、型以外のテンプレート パラメーターは次の型のみであることが規定されています:
型以外のテンプレート パラメーターをコンパイル時の定数値に制限することで、コンパイラーは効率的なコードを生成できます。コンパイル時に、実行前にプログラムの動作を完全に決定して最適化できるようにします。
以上が非型テンプレート パラメーターが定数整数式でなければならないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。