首頁  >  文章  >  後端開發  >  Consteval 函數能否讓依賴函數參數的模板參數中的函數參數合法化?

Consteval 函數能否讓依賴函數參數的模板參數中的函數參數合法化?

Patricia Arquette
Patricia Arquette原創
2024-10-24 03:53:30428瀏覽

Can Consteval Functions Legalize Function Parameters in Template Parameters Dependent on Function Arguments?

Consteval 函數:依賴函數參數的模板參數的限制

在C 17 中,定義依賴於函數的模板參數的constexpr函數禁止爭論。雖然 C 20 中的 consteval 函數承諾強制執行編譯時求值,但這是否意味著此類程式碼現在可以合法化?

問題:

consteval int foo(int i) { 回傳 std::integral_constant::value; }。此代碼在 C 20 中有效嗎?

答:

否。

解釋:

儘管引入了 consteval 函數,但基本原則仍然是非模板函數定義具有單點類型解析。建議代碼的合法化將對單一定義規則(ODR)產生影響。此外,C 20 論文明確指出,由於潛在的類型不匹配,函數參數不會被視為核心常數表達式。

因此,函數參數不能直接用作模板參數依賴項中的常數表達式,甚至在 consteval 函數上下文中。

以上是Consteval 函數能否讓依賴函數參數的模板參數中的函數參數合法化?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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