
C 樣式字串可以當作範本參數嗎?
您嘗試使用 C 樣式字串實例化範本失敗,並出現錯誤無效使用字串文字作為範本參數。
雖然C 樣式字串不能直接用作模板參數,但還有替代方法:
使用指向a 的指標常數字串
一種解決方法是使用指向常數字串的指標作為模板參數:
1 2 3 4 5 6 7 8 9 10 11 12 13 | <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 及更高版本,可利用字元包將字串文字用作模板參數:
1 2 3 4 5 6 7 8 9 10 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中文網其他相關文章!