ホームページ  >  記事  >  バックエンド開発  >  C スタイルの文字列を C のテンプレート引数として使用できますか?

C スタイルの文字列を C のテンプレート引数として使用できますか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-30 17:54:31571ブラウズ

Can C-Style Strings Be Used as Template Arguments in C  ?

C スタイルの文字列をテンプレート引数にすることはできますか?

C スタイルの文字列を使用してテンプレートをインスタンス化しようとすると、エラーが発生して失敗します。文字列リテラルをテンプレート引数として使用するのは無効です。

C スタイルの文字列を直接テンプレート引数として使用することはできませんが、代替のアプローチがあります。

文字列へのポインタを使用する定数文字列

回避策の 1 つは、定数文字列へのポインタをテンプレート引数として使用することです。

<code class="c++">template <char const *str>
struct X {
    const char *GetString() const {
        return str;
    }
};

char global_string[] = "String";

int main() {
    X<global_string> x;
    cout << x.GetString();
}</code>

更新: C 11

C 11 以降では、文字パックを利用して文字列リテラルをテンプレート引数として使用できます:

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。