首頁 > 後端開發 > C++ > 為什麼字串不能用作 C 中的非型別模板參數?

為什麼字串不能用作 C 中的非型別模板參數?

Linda Hamilton
發布: 2024-12-13 16:28:13
原創
342 人瀏覽過

Why Can't Strings Be Used as Non-Type Template Parameters in C  ?

為什麼非型別模板參數不能是字串?

在 C 中,非型別模板參數必須是常數整數表達式。但是,下面的程式碼嘗試使用 std::string 作為非類型模板參數:

template <std::string temp>
void foo()
{
     // ...
}
登入後複製

這會導致編譯器錯誤,表明 std::string 對於非類型來說是非法類型類型模板參數。

這個限制的原因是非常量表達式在編譯過程中無法被解析和取代。它們可能在運行時發生變化,這需要在運行時產生新模板。由於模板是一個編譯時概念,因此這是不可能的。

C 11 標準明確僅允許非型別範本參數的某些型別:

  • 整數或枚舉型別
  • 指向對像或函數的指針
  • 對對像或函數的左值引用函數
  • 指向成員的指針
  • std::nullptr_t

以上是為什麼字串不能用作 C 中的非型別模板參數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板