From Jason Turner

[dcl.fct.def.general]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpi_dkns4_/{from.md → to.md} +18 -6
tmp/tmpi_dkns4_/{from.md → to.md} RENAMED
@@ -1,28 +1,40 @@
1
- ### In general <a id="dcl.fct.def.general">[[dcl.fct.def.general]]</a>
2
 
3
  Function definitions have the form
4
 
5
  ``` bnf
6
  function-definition:
7
- attribute-specifier-seqₒₚₜ decl-specifier-seqₒₚₜ declarator virt-specifier-seqₒₚₜ function-body
8
- attribute-specifier-seqₒₚₜ decl-specifier-seqₒₚₜ declarator requires-clause function-body
 
 
9
  ```
10
 
11
  ``` bnf
12
  function-body:
13
  ctor-initializerₒₚₜ compound-statement
14
  function-try-block
15
  '=' default ';'
 
 
 
 
 
16
  '=' delete ';'
 
17
  ```
18
 
19
  Any informal reference to the body of a function should be interpreted
20
- as a reference to the non-terminal *function-body*. The optional
 
 
 
21
  *attribute-specifier-seq* in a *function-definition* appertains to the
22
- function. A *virt-specifier-seq* can be part of a *function-definition*
23
- only if it is a *member-declaration* [[class.mem]].
 
24
 
25
  In a *function-definition*, either `void` *declarator* `;` or
26
  *declarator* `;` shall be a well-formed function declaration as
27
  described in  [[dcl.fct]]. A function shall be defined only in namespace
28
  or class scope. The type of a parameter or the return type for a
 
1
+ ### General <a id="dcl.fct.def.general">[[dcl.fct.def.general]]</a>
2
 
3
  Function definitions have the form
4
 
5
  ``` bnf
6
  function-definition:
7
+ attribute-specifier-seqₒₚₜ decl-specifier-seqₒₚₜ declarator virt-specifier-seqₒₚₜ
8
+ function-contract-specifier-seqₒₚₜ function-body
9
+ attribute-specifier-seqₒₚₜ decl-specifier-seqₒₚₜ declarator requires-clause
10
+ function-contract-specifier-seqₒₚₜ function-body
11
  ```
12
 
13
  ``` bnf
14
  function-body:
15
  ctor-initializerₒₚₜ compound-statement
16
  function-try-block
17
  '=' default ';'
18
+ deleted-function-body
19
+ ```
20
+
21
+ ``` bnf
22
+ deleted-function-body:
23
  '=' delete ';'
24
+ '=' delete '(' unevaluated-string ')' ';'
25
  ```
26
 
27
  Any informal reference to the body of a function should be interpreted
28
+ as a reference to the non-terminal *function-body*, including, for a
29
+ constructor, default member initializers or default initialization used
30
+ to initialize a base or member subobject in the absence of a
31
+ *mem-initializer-id* [[class.base.init]]. The optional
32
  *attribute-specifier-seq* in a *function-definition* appertains to the
33
+ function. A *function-definition* with a *virt-specifier-seq* shall be a
34
+ *member-declaration* [[class.mem]]. A *function-definition* with a
35
+ *requires-clause* shall define a templated function.
36
 
37
  In a *function-definition*, either `void` *declarator* `;` or
38
  *declarator* `;` shall be a well-formed function declaration as
39
  described in  [[dcl.fct]]. A function shall be defined only in namespace
40
  or class scope. The type of a parameter or the return type for a