首頁  >  文章  >  後端開發  >  Lambda 可以用在 C 中的常數表達式中嗎?

Lambda 可以用在 C 中的常數表達式中嗎?

Barbara Streisand
Barbara Streisand原創
2024-10-30 00:12:29443瀏覽

Can Lambdas Be Used in Constant Expressions in C  ?

Lambda 可以使用 constexpr 嗎?

在早期版本的 C 中,常數表達式中包含 lambda 函數受到限制,如 [表達式.const]/(2.6)。然而,工作草案 N4582 中包含的 N4487 引入了一項更改,允許在這些表達式中使用 lambda。

Constexpr Lambda 的語法

建議的更改N4487 提供了在常數表達式中使用lambda 時的正確語法指南:

  • 常數表達式中允許使用某些lambda 表達式。
  • 常數表達式中允許對特定閉包物件執行的操作。
  • 如果閉包類型的每個資料成員也是文字類型,則將其視為文字類型。
  • 如果 lambda 聲明符中未提供 constexpr 說明符,則將考慮產生的函數呼叫運算子constexpr 如果它滿足 constexpr 函數的要求。此行為與建構函數和賦值運算子函數的隱式 constexpr 推斷一致。

早期 C 版本的解決方法

對於實作 N4487 之前的 C 版本,在常數表達式中使用 lambda 需要替代方法。一種解決方法是利用模板元編程技術來實現所需的功能。

以上是Lambda 可以用在 C 中的常數表達式中嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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