Consteval 函數:依賴函數參數的模板參數的限制
在C 17 中,定義依賴於函數的模板參數的constexpr函數禁止爭論。雖然 C 20 中的 consteval 函數承諾強制執行編譯時求值,但這是否意味著此類程式碼現在可以合法化?
問題:
consteval int foo(int i) { 回傳 std::integral_constant
答:
否。
解釋:
儘管引入了 consteval 函數,但基本原則仍然是非模板函數定義具有單點類型解析。建議代碼的合法化將對單一定義規則(ODR)產生影響。此外,C 20 論文明確指出,由於潛在的類型不匹配,函數參數不會被視為核心常數表達式。
因此,函數參數不能直接用作模板參數依賴項中的常數表達式,甚至在 consteval 函數上下文中。
以上是Consteval 函數能否讓依賴函數參數的模板參數中的函數參數合法化?的詳細內容。更多資訊請關注PHP中文網其他相關文章!