ホームページ > バックエンド開発 > C++ > 非型テンプレート パラメーターが定数整数式でなければならないのはなぜですか?

非型テンプレート パラメーターが定数整数式でなければならないのはなぜですか?

Mary-Kate Olsen
リリース: 2024-12-15 22:37:15
オリジナル
688 人が閲覧しました

Why Must Non-Type Template Parameters Be Constant Integral Expressions?

非型テンプレート パラメーターと定数積分式

非型テンプレート パラメーターはテンプレートをカスタマイズするための貴重なツールですが、なぜ重要なのでしょうかそれらは定数整数式であると考えられますか?

次のことを考えてください。コード:

template <std::string temp>
void foo() {
     // ...
}
ログイン後にコピー

このコードをコンパイルすると、次のエラーが発生します:

error C2993: 'std::string' : illegal type for non-type template parameter 'temp'.
ログイン後にコピー

型以外のテンプレート パラメーターは、コンパイル中に評価されるため、定数の整数式である必要があります。これにより、実行時評価を行わずに直接コードを生成できます。 std::string のような型は実行時に変更される可能性があり、コンパイル時に置き換えることはできません。

標準では、型以外のテンプレート パラメーターは次の型のみであることが規定されています:

  • 整数型または列挙型
  • オブジェクトまたは関数へのポインター
  • オブジェクトへの左辺値参照または関数
  • メンバーへのポインター
  • std::nullptr_t

型以外のテンプレート パラメーターをコンパイル時の定数値に制限することで、コンパイラーは効率的なコードを生成できます。コンパイル時に、実行前にプログラムの動作を完全に決定して最適化できるようにします。

以上が非型テンプレート パラメーターが定数整数式でなければならないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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