File tree Expand file tree Collapse file tree 4 files changed +42
-2
lines changed
Expand file tree Collapse file tree 4 files changed +42
-2
lines changed Original file line number Diff line number Diff line change 248248| 言語機能 | 説明 | [ GCC] [ gcc ] | [ Clang] [ clang ] | [ ICX] [ icx ] | [ MSVC] [ msvc ] |
249249| ----------| ------| ------------| ----------------| ------------| --------------|
250250| P0330R8: [ (符号付き)` size_t ` リテラルのためのサフィックス] ( /lang/cpp23/literal_suffix_for_signed_size_t.md ) | ` 42z ` /` 42Z ` とすることで` size_t ` に対応する符号付き整数型のリテラルとする | 11 | 13 | 2022.2 | - |
251- | P2290R3: [ エスケープシーケンスの区切り] ( /lang/cpp23/delimited_escape_sequences.md.nolink ) | エスケープシーケンスの範囲を明確にする構文を追加する | 13 | 15 | 2023.2 | - |
251+ | P2290R3: [ エスケープシーケンスの区切り] ( /lang/cpp23/delimited_escape_sequences.md ) | エスケープシーケンスの範囲を明確にする構文を追加する | 13 | 15 | 2023.2 | - |
252252| P2266R3: [ 暗黙的なムーブを簡略化] ( /lang/cpp23/simpler_implicit_move.md.nolink ) | 参照を返す関数の` return ` 文で暗黙的にムーブされない問題を修正 | 13 | 13 | 2022.2 | - |
253253| P1787R6: [ スコープと名前ルックアップの仕様整理] ( /lang/cpp23/declarations_and_where_to_find_them.md.nolink ) | 複雑で不完全になっているスコープと名前ルックアップの仕様を整理し、一部の問題を解決する | - | - | - | - |
254254| P2615R1: [ 無意味なexport宣言を禁止する] ( /lang/cpp23/meaningful_exports.md.nolink ) | | - | - | - | - |
Original file line number Diff line number Diff line change @@ -133,6 +133,7 @@ int main()
133133- [ C++20 ` char16_t ` と` char32_t ` の文字・文字列リテラルを、文字コードUTF-16/32に規定] ( /lang/cpp20/make_char16t_char32t_string_literals_be_utf16_32.md )
134134- [ ostream ` operator<< ` ] ( /reference/ostream/basic_ostream/op_ostream_free.md )
135135- [ C++23 名前付きユニバーサルキャラクタ名] ( /lang/cpp23/named_universal_character_escapes.md )
136+ - [ C++23 エスケープシーケンスの区切り] ( /lang/cpp23/delimited_escape_sequences.md )
136137
137138## 参照
138139- [ WG14 N1040 Extensions for the programming language C to support new character data types] ( http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1040.pdf )
Original file line number Diff line number Diff line change @@ -12,7 +12,7 @@ C++23とは、2023年中に改訂される予定の、C++バージョンの通
1212| 言語機能 | 説明 |
1313| ----------| ------|
1414| [ (符号付き)` size_t ` リテラルのためのサフィックス] ( cpp23/literal_suffix_for_signed_size_t.md ) | ` 42z ` /` 42Z ` とすることで` size_t ` に対応する符号付き整数型のリテラルとする |
15- | [ エスケープシーケンスの区切り] ( cpp23/delimited_escape_sequences.md.nolink ) | エスケープシーケンスの範囲を明確にする構文を追加する |
15+ | [ エスケープシーケンスの区切り] ( cpp23/delimited_escape_sequences.md ) | エスケープシーケンスの範囲を明確にする構文を追加する |
1616| [ 暗黙的なムーブを簡略化] ( cpp23/simpler_implicit_move.md.nolink ) | 参照を返す関数の` return ` 文で暗黙的にムーブされない問題を修正 |
1717
1818これらに加えて、ライブラリ機能として拡張浮動小数点数型が定義された。[ ` <stdfloat> ` ] ( /reference/stdfloat.md ) を参照。
Original file line number Diff line number Diff line change 1+ # エスケープシーケンスの区切り
2+ * cpp23[ meta cpp]
3+
4+ ## 概要
5+ C++23では、文字列リテラル中に記述するエスケープシーケンスとユニバーサルキャラクタ名の範囲を明確にするための波カッコ (` {} ` ) で囲む構文が追加される。
6+
7+ ``` cpp
8+ // 8進数のエスケープシーケンス
9+ " \1 8" ; // 8は8進数に含まれないので'\1'と'8'の2文字を表す
10+ " \o{1}8" ; // C++23 : 上記と等価
11+ " \o{18}" ; // C++23 : コンパイルエラー!
12+
13+ // 16進数のエスケープシーケンス
14+ " \xabc " ; // 1文字
15+ " \xab " " c" ; // 2文字 (文字列リテラルを分けて連結させる回避策)
16+ " \x{ab}c" ; // C++23 : 2文字を表す
17+
18+ // ユニバーサルキャラクタ名
19+ u8" \u0001 F1F8" ; // 4文字か8文字のみ指定できる制限があるので先頭0埋めする
20+ u8" \u{1F1F8}" ; // C++23 : 5文字のコードポイントも記述できる
21+ ```
22+
23+ 8進数エスケープシーケンスには3文字までという制限、ユニバーサルキャラクタ名には4文字または8文字の制限があったが、この構文ではその制限はない。
24+
25+
26+ ## この機能が必要になった背景・経緯
27+ ### ユニバーサルキャラクタ名の4文字・8文字制限
28+ ユニバーサルキャラクタ名は4文字か8文字で指定する制限があったため、5文字のコードポイントを指定するために` \U0001F1F8 ` のように先頭を0埋めする必要があった。
29+
30+ ### エスケープシーケンスの範囲を表現しにくい問題
31+ 8進数または16進数によるエスケープシーケンスは、8進数は3文字まで、16進数は無制限の文字数という制限の違いがあり、また、8進数または16進数ではない文字が現れることでエスケープシーケンスの範囲が終了するため注意が必要であった。
32+
33+
34+ ## 関連項目
35+ - [ C++11 ` char16_t ` と` char32_t ` ] ( /lang/cpp11/char16_32.md )
36+
37+
38+ ## 参照
39+ - [ P2290R3 Delimited escape sequences] ( https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2290r3.pdf )
You can’t perform that action at this time.
0 commit comments