tmp/tmpt23_x58t/{from.md → to.md}
RENAMED
|
@@ -9,10 +9,15 @@ entity.
|
|
| 9 |
``` bnf
|
| 10 |
type-id:
|
| 11 |
type-specifier-seq abstract-declaratorₒₚₜ
|
| 12 |
```
|
| 13 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 14 |
``` bnf
|
| 15 |
abstract-declarator:
|
| 16 |
ptr-abstract-declarator
|
| 17 |
noptr-abstract-declaratorₒₚₜ parameters-and-qualifiers trailing-return-type
|
| 18 |
abstract-pack-declarator
|
|
@@ -47,22 +52,26 @@ noptr-abstract-pack-declarator:
|
|
| 47 |
It is possible to identify uniquely the location in the
|
| 48 |
*abstract-declarator* where the identifier would appear if the
|
| 49 |
construction were a declarator in a declaration. The named type is then
|
| 50 |
the same as the type of the hypothetical identifier.
|
| 51 |
|
|
|
|
|
|
|
| 52 |
``` cpp
|
| 53 |
int // int i
|
| 54 |
int * // int *pi
|
| 55 |
int *[3] // int *p[3]
|
| 56 |
int (*)[3] // int (*p3i)[3]
|
| 57 |
int *() // int *f()
|
| 58 |
int (*)(double) // int (*pf)(double)
|
| 59 |
```
|
| 60 |
|
| 61 |
-
name respectively the types “`int`
|
| 62 |
-
pointers to `int`
|
| 63 |
-
parameters) returning pointer to `int`
|
| 64 |
-
(`double`) returning `int`
|
| 65 |
|
| 66 |
-
|
|
|
|
|
|
|
| 67 |
[[dcl.typedef]]).
|
| 68 |
|
|
|
|
| 9 |
``` bnf
|
| 10 |
type-id:
|
| 11 |
type-specifier-seq abstract-declaratorₒₚₜ
|
| 12 |
```
|
| 13 |
|
| 14 |
+
``` bnf
|
| 15 |
+
defining-type-id:
|
| 16 |
+
defining-type-specifier-seq abstract-declaratorₒₚₜ
|
| 17 |
+
```
|
| 18 |
+
|
| 19 |
``` bnf
|
| 20 |
abstract-declarator:
|
| 21 |
ptr-abstract-declarator
|
| 22 |
noptr-abstract-declaratorₒₚₜ parameters-and-qualifiers trailing-return-type
|
| 23 |
abstract-pack-declarator
|
|
|
|
| 52 |
It is possible to identify uniquely the location in the
|
| 53 |
*abstract-declarator* where the identifier would appear if the
|
| 54 |
construction were a declarator in a declaration. The named type is then
|
| 55 |
the same as the type of the hypothetical identifier.
|
| 56 |
|
| 57 |
+
[*Example 1*:
|
| 58 |
+
|
| 59 |
``` cpp
|
| 60 |
int // int i
|
| 61 |
int * // int *pi
|
| 62 |
int *[3] // int *p[3]
|
| 63 |
int (*)[3] // int (*p3i)[3]
|
| 64 |
int *() // int *f()
|
| 65 |
int (*)(double) // int (*pf)(double)
|
| 66 |
```
|
| 67 |
|
| 68 |
+
name respectively the types “`int`”, “pointer to `int`”, “array of 3
|
| 69 |
+
pointers to `int`”, “pointer to array of 3 `int`”, “function of (no
|
| 70 |
+
parameters) returning pointer to `int`”, and “pointer to a function of
|
| 71 |
+
(`double`) returning `int`”.
|
| 72 |
|
| 73 |
+
— *end example*]
|
| 74 |
+
|
| 75 |
+
A type can also be named (often more easily) by using a `typedef` (
|
| 76 |
[[dcl.typedef]]).
|
| 77 |
|