Skip to content

Commit e897a16

Browse files
committed
C++26 「文字列リテラルの文字エンコーディング失敗を不適格とする」 : 例を見直し
1 parent 2402f98 commit e897a16

File tree

1 file changed

+3
-4
lines changed

1 file changed

+3
-4
lines changed

lang/cpp26/making_non-encodable_string_literals_ill-formed.md

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,12 @@ wchar_t c = L'é'; // C++20:OK, C++23:NG \u0065\u0301
2020

2121
C++26ではさらに、文字列リテラルとしてエンコーディングできない文字の扱いが実装定義でコンパイラーに任されていたものを、不適格になるよう仕様変更する。
2222

23+
また、マルチ文字リテラル (ひとつの文字リテラルに4文字まで入れられて値が実装定義なもの。例として`'intl'`) については、単一のコードユニットにエンコードされるもののみ許可される。
24+
2325
```cpp
24-
wchar_t ao = L'\x123456789abcdef0'; // C++23:実装定義, C++26:NG (範囲外)
25-
char16_t ap = u'\x12345678'; // C++23:実装定義, C++26:NG (範囲外)
26+
char c = 'é'; // C++23:実装定義, C++26:NG グレイブアクセントをつけると複数のコードユニットになる
2627
```
2728

28-
また、マルチ文字リテラル (ひとつの文字リテラルに4文字まで入れられて値が実装定義なもの。例として`'intl'`) については、単一のコードユニットにエンコードされるもののみ許可される。
29-
3029

3130
## 関連項目
3231
- [C++23 1ワイド文字に収まらないワイド文字リテラルを禁止する](/lang/cpp23/remove_non_encodable_wide_character_literals_and_multicharacter_wide_character_literals.md)

0 commit comments

Comments
 (0)