在元程式設計領域,出現了一種有趣的 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中文網其他相關文章!