首頁 > 後端開發 > C++ > 為什麼我不能在 `constexpr` 函數中使用函數參數作為常數表達式?

為什麼我不能在 `constexpr` 函數中使用函數參數作為常數表達式?

Mary-Kate Olsen
發布: 2024-11-22 00:28:14
原創
542 人瀏覽過

Why Can't I Use a Function Parameter in a `constexpr` Function as a Constant Expression?

不能在常數表達式中使用constexpr 函數的函數參數

提供的程式碼片段顯示了constexpr 函數make_const 和函數make_const 與非常量表達式一起使用。這會引發錯誤,因為 t1 中的 i 不是常數表達式。

constexpr 函數,當給定常數參數時,可以在編譯時求值。但是,如果將非 constexpr 參數傳遞給 constexpr 函數,它不會使該參數成為常數表達式。

在下面的程式碼中,t1 是constexpr 函數,但t1 中的make_const(i) 是不是常數表達式,因為i 不是常數:

更新的程式碼顯示t1可以宣告為constexpr 且回傳make_const的結果:

但是,下面的程式碼仍然會導致錯誤,因為do_something() 不是常數表達式:

總而言之,constexpr 函數參數必須是常數表達式。如果傳遞非常量參數,它不會成為 constexpr 函數內的常數表達式。

以上是為什麼我不能在 `constexpr` 函數中使用函數參數作為常數表達式?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板