首頁 >後端開發 >C++ >有狀態元程式設計在 C 17 中合法嗎?

有狀態元程式設計在 C 17 中合法嗎?

DDD
DDD原創
2024-11-18 21:54:03290瀏覽

Is Stateful Metaprogramming Legal in C  17?

有狀態元程式設計的未來不確定嗎?

在元程式設計領域,出現了一種有趣的 constexpr 計數器技術,稱為有狀態元程式設計。這種複雜的技術引起了開發人員的欽佩和不安。問題依然存在:隨著 C 17 的出現,它的合法性是否被重新檢視?

C 14 中的有狀態元編程

正如提供的程式碼片段所示,在C 14 利用友元聲明、ADL 和constexpr 創建一個在調用之間保持其狀態的計數器。儘管看似神秘,但這種技術在 C 14 下是合法的。

The Dark Cloud: CWG Issue 2118

但是,這種做法引起了 C 標準的審查委員會,特別是透過活躍問題 CWG 第 2118 期。委員會認識到該技術的模糊性,並主張將其劃界為格式錯誤。

C 17 的沉默姿態

儘管 CWG 對此表示擔憂,但 C 17 並未明確解決這個問題。這意味著有狀態元編程在 C 17 中仍然合法,儘管有警告稱其命運可能在未來改變。

追溯性影響

應該禁止機制設計出來後,有狀態元程式設計可能會被追溯認為是格式錯誤的。這將使問題中提供的程式碼片段無效,從而為現有程式碼庫帶來潛在風險。

結論

有狀態元程式設計的未來仍不確定。雖然它在 C 17 中仍然合法,但 CWG 對該技術的不滿表明它的日子可能屈指可數了。採用此技術的開發人員應該意識到這種潛在的警告,並監控 C 標準中的未來更新,以確保其程式碼的完整性。

以上是有狀態元程式設計在 C 17 中合法嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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