なぜ非型テンプレート パラメーターは文字列にできないのですか?
C では、非型テンプレート パラメーターは定数の整数式である必要があります。ただし、以下のコードは std::string を型以外のテンプレート パラメータとして使用しようとします:
template <std::string temp> void foo() { // ... }
これにより、std::string が非型のテンプレート パラメータとして不正な型であることを示すコンパイラ エラーが発生します。 type template パラメータ。
この制限の理由は、コンパイル中に非定数式を解析したり置換したりできないためです。これらは実行時に変更される可能性があるため、実行時に新しいテンプレートを生成する必要があります。テンプレートはコンパイル時の概念であるため、これは不可能です。
C 11 標準では、非型テンプレート パラメーターとして特定の型のみを明示的に許可しています。
以上がC では文字列を型以外のテンプレート パラメーターとして使用できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。