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中文網其他相關文章!