このページはC++23に採用された言語機能の変更を解説しています。
のちのC++規格でさらに変更される場合があるため関連項目を参照してください。
概要
C++20まで、ソースコードの文字集合は実装定義だったが、その仕様では移植性に問題があった。C++23からは、すべてのコンパイラはUTF-8文字コードのソースコードをサポートしなければならないことが規定される。
コンパイラは、ほかの文字コードと区別するため、入力ファイルがUTF-8であることを決定する実装定義の手段をもたなければならない。つまり、BOM (バイトオーダーマーク) を認識するだけでは十分ではない。