為什麼非型別模板參數不能是字串?
在 C 中,非型別模板參數必須是常數整數表達式。但是,下面的程式碼嘗試使用 std::string 作為非類型模板參數:
template <std::string temp> void foo() { // ... }
這會導致編譯器錯誤,表明 std::string 對於非類型來說是非法類型類型模板參數。
這個限制的原因是非常量表達式在編譯過程中無法被解析和取代。它們可能在運行時發生變化,這需要在運行時產生新模板。由於模板是一個編譯時概念,因此這是不可能的。
C 11 標準明確僅允許非型別範本參數的某些型別:
以上是為什麼字串不能用作 C 中的非型別模板參數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!