首頁 >後端開發 >C++ >字串文字可以作為非類型模板參數傳遞嗎?

字串文字可以作為非類型模板參數傳遞嗎?

Barbara Streisand
Barbara Streisand原創
2024-11-20 01:27:03896瀏覽

Can String Literals be Passed as Non-Type Template Arguments?

將字串文字傳遞給非類型類別模板參數

問題:

字串文字可以作為類別模板的非型別參數,例如在像my_class 這樣的宣告中?

答案:

直接將字串文字作為非-type 模板參數是不可能的,有一個非常接近它的解決方案。

您可以利用 const char* 類型的非型別模板參數,並向其傳遞具有靜態連結的 const char[] 變數。這種方法與直接傳遞字串文字有相似之處。

這是一個可編譯的範例:

#include <iostream>

template<const char *str>
struct cts {
    void p() { std::cout << str; }
};

static const char teststr[] = "Hello world!";

int main() {
    cts<teststr> o;
    o.p();
}

上面的程式碼聲明了一個帶有非類型模板參數 str 的類別模板 cts,該參數採用常數字元指標。使用靜態連結定義的變數 teststr 保存字串文字並傳遞給模板實例化。

此方法是直接將字串文字作為非類型模板參數傳遞的可行替代方法。

以上是字串文字可以作為非類型模板參數傳遞嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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