首頁  >  文章  >  後端開發  >  C 風格字串可以用作 C 中的模板參數嗎?

C 風格字串可以用作 C 中的模板參數嗎?

Susan Sarandon
Susan Sarandon原創
2024-10-30 17:54:31510瀏覽

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

C 樣式字串可以當作範本參數嗎?

您嘗試使用 C 樣式字串實例化範本失敗,並出現錯誤無效使用字串文字作為範本參數。

雖然C 樣式字串不能直接用作模板參數,但還有替代方法:

使用指向a 的指標常數字串

一種解決方法是使用指向常數字串的指標作為模板參數:

<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();
}

更新:使用C 11 將字串文字作為模板參數

使用C 11 及更高版本,可利用字元包將字串文字用作模板參數:

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

int main() {
    X<"S", "t", "r", "i", "n", "g"> x;
    cout << x.GetString();
}</code>

以上是C 風格字串可以用作 C 中的模板參數嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn