From Jason Turner

[lex.icon]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpcl35309i/{from.md → to.md} +14 -2
tmp/tmpcl35309i/{from.md → to.md} RENAMED
@@ -67,12 +67,14 @@ hexadecimal-digit: one of
67
 
68
  ``` bnf
69
  integer-suffix:
70
  unsigned-suffix long-suffixₒₚₜ
71
  unsigned-suffix long-long-suffixₒₚₜ
 
72
  long-suffix unsigned-suffixₒₚₜ
73
  long-long-suffix unsigned-suffixₒₚₜ
 
74
  ```
75
 
76
  ``` bnf
77
  unsigned-suffix: one of
78
  'u U'
@@ -86,10 +88,15 @@ long-suffix: one of
86
  ``` bnf
87
  long-long-suffix: one of
88
  'll LL'
89
  ```
90
 
 
 
 
 
 
91
  In an *integer-literal*, the sequence of *binary-digit*s,
92
  *octal-digit*s, *digit*s, or *hexadecimal-digit*s is interpreted as a
93
  base N integer as shown in table [[lex.icon.base]]; the lexically first
94
  digit of the sequence of digits is the most significant.
95
 
@@ -114,16 +121,16 @@ decimal values ten through fifteen.
114
  `0x10'0000`, and `0'004'000'000` all have the same
115
  value. — *end example*]
116
 
117
  The type of an *integer-literal* is the first type in the list in
118
  [[lex.icon.type]] corresponding to its optional *integer-suffix* in
119
- which its value can be represented. An *integer-literal* is a prvalue.
120
 
121
  **Table: Types of *integer-literal*s** <a id="lex.icon.type">[lex.icon.type]</a>
122
 
123
  | *integer-suffix* | *decimal-literal* | *integer-literal* other than *decimal-literal* |
124
- | ---------------- | ------------------------ | ---------------------------------------------- |
125
  | none | `int` | `int` |
126
  | | `long int` | `unsigned int` |
127
  | | `long long int` | `long int` |
128
  | | | `unsigned long int` |
129
  | | | `long long int` |
@@ -139,10 +146,15 @@ which its value can be represented. An *integer-literal* is a prvalue.
139
  | and `l` or `L` | `unsigned long long int` | `unsigned long long int` |
140
  | `ll` or `LL` | `long long int` | `long long int` |
141
  | | | `unsigned long long int` |
142
  | Both `u` or `U` | `unsigned long long int` | `unsigned long long int` |
143
  | and `ll` or `LL` | | |
 
 
 
 
 
144
 
145
 
146
  If an *integer-literal* cannot be represented by any type in its list
147
  and an extended integer type [[basic.fundamental]] can represent its
148
  value, it may have that extended integer type. If all of the types in
 
67
 
68
  ``` bnf
69
  integer-suffix:
70
  unsigned-suffix long-suffixₒₚₜ
71
  unsigned-suffix long-long-suffixₒₚₜ
72
+ unsigned-suffix size-suffixₒₚₜ
73
  long-suffix unsigned-suffixₒₚₜ
74
  long-long-suffix unsigned-suffixₒₚₜ
75
+ size-suffix unsigned-suffixₒₚₜ
76
  ```
77
 
78
  ``` bnf
79
  unsigned-suffix: one of
80
  'u U'
 
88
  ``` bnf
89
  long-long-suffix: one of
90
  'll LL'
91
  ```
92
 
93
+ ``` bnf
94
+ size-suffix: one of
95
+ 'z Z'
96
+ ```
97
+
98
  In an *integer-literal*, the sequence of *binary-digit*s,
99
  *octal-digit*s, *digit*s, or *hexadecimal-digit*s is interpreted as a
100
  base N integer as shown in table [[lex.icon.base]]; the lexically first
101
  digit of the sequence of digits is the most significant.
102
 
 
121
  `0x10'0000`, and `0'004'000'000` all have the same
122
  value. — *end example*]
123
 
124
  The type of an *integer-literal* is the first type in the list in
125
  [[lex.icon.type]] corresponding to its optional *integer-suffix* in
126
+ which its value can be represented.
127
 
128
  **Table: Types of *integer-literal*s** <a id="lex.icon.type">[lex.icon.type]</a>
129
 
130
  | *integer-suffix* | *decimal-literal* | *integer-literal* other than *decimal-literal* |
131
+ | ---------------- | ----------------------------------------- | ---------------------------------------------- |
132
  | none | `int` | `int` |
133
  | | `long int` | `unsigned int` |
134
  | | `long long int` | `long int` |
135
  | | | `unsigned long int` |
136
  | | | `long long int` |
 
146
  | and `l` or `L` | `unsigned long long int` | `unsigned long long int` |
147
  | `ll` or `LL` | `long long int` | `long long int` |
148
  | | | `unsigned long long int` |
149
  | Both `u` or `U` | `unsigned long long int` | `unsigned long long int` |
150
  | and `ll` or `LL` | | |
151
+ | `z` or `Z` | the signed integer type corresponding | the signed integer type |
152
+ | | to `std::size_t` [[support.types.layout]] | corresponding to `std::size_t` |
153
+ | | | `std::size_t` |
154
+ | Both `u` or `U` | `std::size_t` | `std::size_t` |
155
+ | and `z` or `Z` | | |
156
 
157
 
158
  If an *integer-literal* cannot be represented by any type in its list
159
  and an extended integer type [[basic.fundamental]] can represent its
160
  value, it may have that extended integer type. If all of the types in