編譯時字串長度計算:它真的是 constexpr 嗎?
在嘗試在編譯時計算字串長度時,一部分程式碼利用遞歸函數(長度)來實現這一點。然而,關於在編譯時對該函數進行保證評估的問題出現了。
此標準並未明確要求 constexpr 函數在編譯時進行評估。儘管如此,C 標準草案第 5.19 節中的一項非規範性註釋表明,常量表達式可能會在翻譯過程中進行求值。
為了確保編譯時求值,可以將結果指派給 constexpr 變數。正如Bjarne Stroustrup 所說:
「除了能夠在編譯時計算表達式之外,我們還希望能夠要求在編譯時計算表達式;變數定義前面的constexpr 可以做到這一點(並暗示const )。例如在數組邊界中。
使用函數結果初始化 constexpr 變數。
<code class="cpp">constexpr int len1 = length("abcd");</code>
因此,雖然僅聲明 constexpr 函數並不能保證編譯時評估、將其結果分配給 constexpr 變數或在適當的上下文中使用它可以確保這一點。
以上是constexpr 函數能否保證編譯時字串長度計算?的詳細內容。更多資訊請關注PHP中文網其他相關文章!