ホームページ > バックエンド開発 > C++ > C では文字列を型以外のテンプレート パラメーターとして使用できないのはなぜですか?

C では文字列を型以外のテンプレート パラメーターとして使用できないのはなぜですか?

Linda Hamilton
リリース: 2024-12-13 16:28:13
オリジナル
342 人が閲覧しました

Why Can't Strings Be Used as Non-Type Template Parameters in C  ?

なぜ非型テンプレート パラメーターは文字列にできないのですか?

C では、非型テンプレート パラメーターは定数の整数式である必要があります。ただし、以下のコードは std::string を型以外のテンプレート パラメータとして使用しようとします:

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

これにより、std::string が非型のテンプレート パラメータとして不正な型であることを示すコンパイラ エラーが発生します。 type template パラメータ。

この制限の理由は、コンパイル中に非定数式を解析したり置換したりできないためです。これらは実行時に変更される可能性があるため、実行時に新しいテンプレートを生成する必要があります。テンプレートはコンパイル時の概念であるため、これは不可能です。

C 11 標準では、非型テンプレート パラメーターとして特定の型のみを明示的に許可しています。

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

以上がC では文字列を型以外のテンプレート パラメーターとして使用できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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