From Jason Turner

[dcl.type.simple]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmph5rxnlnu/{from.md → to.md} +22 -8
tmp/tmph5rxnlnu/{from.md → to.md} RENAMED
@@ -4,11 +4,11 @@ The simple type specifiers are
4
 
5
  ``` bnf
6
  simple-type-specifier:
7
  nested-name-specifierₒₚₜ type-name
8
  nested-name-specifier template simple-template-id
9
- decltype-specifier
10
  placeholder-type-specifier
11
  nested-name-specifierₒₚₜ template-name
12
  char
13
  char8_t
14
  char16_t
@@ -30,24 +30,36 @@ type-name:
30
  class-name
31
  enum-name
32
  typedef-name
33
  ```
34
 
 
 
 
 
 
 
 
35
  The component names of a *simple-type-specifier* are those of its
36
  *nested-name-specifier*, *type-name*, *simple-template-id*,
37
  *template-name*, and/or *type-constraint* (if it is a
38
  *placeholder-type-specifier*). The component name of a *type-name* is
39
  the first name in it.
40
 
41
  A *placeholder-type-specifier* is a placeholder for a type to be deduced
42
- [[dcl.spec.auto]]. A *type-specifier* of the form `typename`ₒₚₜ
43
- *nested-name-specifier*ₒₚₜ *template-name* is a placeholder for a
44
- deduced class type [[dcl.type.class.deduct]]. The
45
- *nested-name-specifier*, if any, shall be non-dependent and the
46
- *template-name* shall name a deducible template. A *deducible template*
47
- is either a class template or is an alias template whose
48
- *defining-type-id* is of the form
 
 
 
 
 
49
 
50
  ``` bnf
51
  typenameₒₚₜ nested-name-specifierₒₚₜ templateₒₚₜ simple-template-id
52
  ```
53
 
@@ -68,12 +80,14 @@ combinations of *simple-type-specifier*s and the types they specify.
68
  | Specifier(s) | Type |
69
  | ---------------------------- | ------------------------------------------------- |
70
  | *type-name* | the type named |
71
  | *simple-template-id* | the type as defined in~ [[temp.names]] |
72
  | *decltype-specifier* | the type as defined in~ [[dcl.type.decltype]] |
 
73
  | *placeholder-type-specifier* | the type as defined in~ [[dcl.spec.auto]] |
74
  | *template-name* | the type as defined in~ [[dcl.type.class.deduct]] |
 
75
  | `char` | ```char`'' |
76
  | `unsigned char` | ```unsigned char`'' |
77
  | `signed char` | ```signed char`'' |
78
  | `char8_t` | ```char8_t`'' |
79
  | `char16_t` | ```char16_t`'' |
 
4
 
5
  ``` bnf
6
  simple-type-specifier:
7
  nested-name-specifierₒₚₜ type-name
8
  nested-name-specifier template simple-template-id
9
+ computed-type-specifier
10
  placeholder-type-specifier
11
  nested-name-specifierₒₚₜ template-name
12
  char
13
  char8_t
14
  char16_t
 
30
  class-name
31
  enum-name
32
  typedef-name
33
  ```
34
 
35
+ ``` bnf
36
+ computed-type-specifier:
37
+ decltype-specifier
38
+ pack-index-specifier
39
+ splice-type-specifier
40
+ ```
41
+
42
  The component names of a *simple-type-specifier* are those of its
43
  *nested-name-specifier*, *type-name*, *simple-template-id*,
44
  *template-name*, and/or *type-constraint* (if it is a
45
  *placeholder-type-specifier*). The component name of a *type-name* is
46
  the first name in it.
47
 
48
  A *placeholder-type-specifier* is a placeholder for a type to be deduced
49
+ [[dcl.spec.auto]]. A *type-specifier* is a placeholder for a deduced
50
+ class type [[dcl.type.class.deduct]] if either
51
+
52
+ - it is of the form `typename`ₒₚₜ *nested-name-specifier*ₒₚₜ
53
+ *template-name* or
54
+ - it is of the form `typename`ₒₚₜ *splice-specifier* and the
55
+ *splice-specifier* designates a class template or alias template.
56
+
57
+ The *nested-name-specifier* or *splice-specifier*, if any, shall be
58
+ non-dependent and the *template-name* or *splice-specifier* shall
59
+ designate a deducible template. A *deducible template* is either a class
60
+ template or is an alias template whose *defining-type-id* is of the form
61
 
62
  ``` bnf
63
  typenameₒₚₜ nested-name-specifierₒₚₜ templateₒₚₜ simple-template-id
64
  ```
65
 
 
80
  | Specifier(s) | Type |
81
  | ---------------------------- | ------------------------------------------------- |
82
  | *type-name* | the type named |
83
  | *simple-template-id* | the type as defined in~ [[temp.names]] |
84
  | *decltype-specifier* | the type as defined in~ [[dcl.type.decltype]] |
85
+ | *pack-index-specifier* | the type as defined in~ [[dcl.type.pack.index]] |
86
  | *placeholder-type-specifier* | the type as defined in~ [[dcl.spec.auto]] |
87
  | *template-name* | the type as defined in~ [[dcl.type.class.deduct]] |
88
+ | *splice-type-specifier* | the type as defined in~ [[dcl.type.splice]] |
89
  | `char` | ```char`'' |
90
  | `unsigned char` | ```unsigned char`'' |
91
  | `signed char` | ```signed char`'' |
92
  | `char8_t` | ```char8_t`'' |
93
  | `char16_t` | ```char16_t`'' |