首頁 >後端開發 >C++ >模板參數可以依賴 C 20 Consteval 函數中的函數參數嗎?

模板參數可以依賴 C 20 Consteval 函數中的函數參數嗎?

DDD
DDD原創
2024-10-23 20:37:30251瀏覽

Can Template Parameters Depend on Function Arguments in C  20 Consteval Functions?

Consteval 函數和模板參數都依賴函數參數

在C 17 中,模板參數不能依賴函數參數,因為編譯器仍然是函數需要為非constexpr 函數產生執行時間指令,即使它們是在編譯時求值的。

C 20 Consteval 函數

C 20 引入了 consteval 函數,它必須在編譯時評估,消除運行時約束。然而,問題仍然存在:這是否意味著模板參數現在可以依賴函數參數?

不允許依賴模板參數

儘管引入了 consteval 函數,答案是否定的。該論文承認參數不應被視為核心常數表達式。這是由於潛在的類型差異造成的,如論文中的範例所示:

因此,函數參數永遠不會被視為常數表達式,從而防止範本參數依賴它們。

以上是模板參數可以依賴 C 20 Consteval 函數中的函數參數嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn