From Jason Turner

[dcl.decl.general]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmp8hop5lt9/{from.md → to.md} +11 -7
tmp/tmp8hop5lt9/{from.md → to.md} RENAMED
@@ -11,23 +11,23 @@ init-declarator-list:
11
  init-declarator-list ',' init-declarator
12
  ```
13
 
14
  ``` bnf
15
  init-declarator:
16
- declarator initializerₒₚₜ
17
- declarator requires-clause
18
  ```
19
 
20
  In all contexts, a *declarator* is interpreted as given below. Where an
21
  *abstract-declarator* can be used (or omitted) in place of a
22
  *declarator* [[dcl.fct]], [[except.pre]], it is as if a unique
23
  identifier were included in the appropriate place [[dcl.name]]. The
24
- preceding specifiers indicate the type, storage class or other
25
- properties of the entity or entities being declared. Each declarator
26
- specifies one entity and (optionally) names it and/or modifies the type
27
- of the specifiers with operators such as `*` (pointer to) and `()`
28
- (function returning).
29
 
30
  [*Note 1*: An *init-declarator* can also specify an initializer
31
  [[dcl.init]]. — *end note*]
32
 
33
  Each *init-declarator* or *member-declarator* in a declaration is
@@ -105,10 +105,14 @@ void g(int (*)() requires true); // error: constraint on a parameter-
105
  auto* p = new void(*)(char) requires true; // error: not a function declaration
106
  ```
107
 
108
  — *end example*]
109
 
 
 
 
 
110
  Declarators have the syntax
111
 
112
  ``` bnf
113
  declarator:
114
  ptr-declarator
 
11
  init-declarator-list ',' init-declarator
12
  ```
13
 
14
  ``` bnf
15
  init-declarator:
16
+ declarator initializer
17
+ declarator requires-clauseₒₚₜ function-contract-specifier-seqₒₚₜ
18
  ```
19
 
20
  In all contexts, a *declarator* is interpreted as given below. Where an
21
  *abstract-declarator* can be used (or omitted) in place of a
22
  *declarator* [[dcl.fct]], [[except.pre]], it is as if a unique
23
  identifier were included in the appropriate place [[dcl.name]]. The
24
+ preceding specifiers indicate the type, storage duration, linkage, or
25
+ other properties of the entity or entities being declared. Each
26
+ declarator specifies one entity and (optionally) names it and/or
27
+ modifies the type of the specifiers with operators such as `*` (pointer
28
+ to) and `()` (function returning).
29
 
30
  [*Note 1*: An *init-declarator* can also specify an initializer
31
  [[dcl.init]]. — *end note*]
32
 
33
  Each *init-declarator* or *member-declarator* in a declaration is
 
105
  auto* p = new void(*)(char) requires true; // error: not a function declaration
106
  ```
107
 
108
  — *end example*]
109
 
110
+ The optional *function-contract-specifier-seq* [[dcl.contract.func]] in
111
+ an *init-declarator* shall be present only if the *declarator* declares
112
+ a function.
113
+
114
  Declarators have the syntax
115
 
116
  ``` bnf
117
  declarator:
118
  ptr-declarator