首頁 >後端開發 >C++ >Lambda 函數可以與 C 中的 `constexpr` 一起使用嗎?

Lambda 函數可以與 C 中的 `constexpr` 一起使用嗎?

Susan Sarandon
Susan Sarandon原創
2024-11-02 09:51:02511瀏覽

Can Lambda Functions Be Used with `constexpr` in C  ?

Lambda 函數和 Constexpr

問題: 是否可以在 C 中將 cons>

問題:

是否可以在 C 中將 cons>

問題:
<code class="cpp">struct Test
{
  static const int value = []() -> int { return 0; } ();
};</code>
是否可以在 C 中使用 lamtex 函數與 lambda 函數一起使用?

在以下代碼示例中,編譯器報告與需要constexpr 函數相關的錯誤:

答案:

更新( C 17): 從C 17 開始,常數表達式中允許使用lambda 函數。

C 17 之前的版本:
    目前,C 14 的常數表達式中不允許使用 lambda。 ,已提出一項提案 (N4487),允許某些 lambda 表達式和閉包物件出現在常數表達式中。
  • 如果提案被接受,它將引入以下變更:
如果閉包類型的資料成員都是文字類型,則它們將被視為文字類型。

如果 lambda 聲明符中未提供 constexpr 說明符,則產生的函數呼叫運算子將是 constexpr(如果滿足 constexpr 的要求)函數。 此變更將與隱式定義的構造函數和賦值運算子函數的行為保持一致,在適當的情況下可以將其推斷為 constexpr。

以上是Lambda 函數可以與 C 中的 `constexpr` 一起使用嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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