C 23是C 20之後的下一個C 標準,它包含了對C 的一系列改進,但對於C 98、C 11或C 20那樣具有革命性的影響力較小,更像是C 17的延續。C 23的制定過程非常有趣,包括了很多的討論和爭議。本文將介紹C 23的一些新特性。
C 23引入了模塊,使得標準庫能夠作為模塊而不是頭文件導入。這樣可以提高編譯速度,減少頭文件依賴和名稱空間污染。
C 23引入了if consteval,如果上下文是常量評估的,則執行語句。這個特性可以用於編譯時計算,例如在編譯時計算斐波那契數列。
C 23允許非靜態成員函數的第一個參數可以是由「this」表示的顯式對象參數。這個特性可以用於實現某些元編程技術。
C 23允許使用多個參數重載下標運算符,使處理多維數組更容易。
C 23允許延長for-range-initializer中臨時對象的生命周期,直到循環結束。這個特性可以用於避免不必要的拷貝和移動。
除了上述特性外,C 23還包括了其他一些特性,例如std::format、std::span、std::stop_token、std::source_location等等。
C 23的目標包括Library support for coroutines、A modular standard library、Executors、Networking。
C 23的制定過程中存在很多討論和爭議,但最終的技術工作已經完成。C 23的新特性相對於C 20來說影響力較小,更像是C 17的延續。C 23的新特性已經在GCC和Clang中被實現,但實際可用性取決於編譯器開發人員。
總的來說,C 23引入了一些有用的新特性,但相對於C 20來說影響力較小。C 23的目標包括了一些重要的特性,但能否順利達成還有待觀察。
到訪人數:(46)