tmp/tmpd7ftxjm2/{from.md → to.md}
RENAMED
|
@@ -1,12 +1,13 @@
|
|
| 1 |
## Declarations and definitions <a id="basic.def">[[basic.def]]</a>
|
| 2 |
|
| 3 |
-
A declaration [[dcl.dcl]] may introduce one or more names
|
| 4 |
-
translation unit
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
|
|
|
| 8 |
|
| 9 |
- a static assertion [[dcl.pre]],
|
| 10 |
- controlling template instantiation [[temp.explicit]],
|
| 11 |
- guiding template argument deduction for constructors
|
| 12 |
[[temp.deduct.guide]],
|
|
@@ -19,16 +20,16 @@ declaration unless:
|
|
| 19 |
- it declares a function without specifying the function’s body
|
| 20 |
[[dcl.fct.def]],
|
| 21 |
- it contains the `extern` specifier [[dcl.stc]] or a
|
| 22 |
*linkage-specification*[^1] [[dcl.link]] and neither an *initializer*
|
| 23 |
nor a *function-body*,
|
| 24 |
-
- it declares a non-inline static data member in a class definition
|
| 25 |
-
[[class.mem]], [[class.static]]
|
| 26 |
- it declares a static data member outside a class definition and the
|
| 27 |
variable was defined within the class with the `constexpr` specifier
|
| 28 |
(this usage is deprecated; see [[depr.static.constexpr]]),
|
| 29 |
-
- it is
|
| 30 |
- it is an *opaque-enum-declaration* [[dcl.enum]],
|
| 31 |
- it is a *template-parameter* [[temp.param]],
|
| 32 |
- it is a *parameter-declaration* [[dcl.fct]] in a function declarator
|
| 33 |
that is not the *declarator* of a *function-definition*,
|
| 34 |
- it is a `typedef` declaration [[dcl.typedef]],
|
|
@@ -130,8 +131,8 @@ struct C {
|
|
| 130 |
|
| 131 |
[*Note 2*: A class name can also be implicitly declared by an
|
| 132 |
*elaborated-type-specifier* [[dcl.type.elab]]. — *end note*]
|
| 133 |
|
| 134 |
In the definition of an object, the type of that object shall not be an
|
| 135 |
-
incomplete type [[
|
| 136 |
-
[[class.abstract]], or a (possibly
|
| 137 |
|
|
|
|
| 1 |
## Declarations and definitions <a id="basic.def">[[basic.def]]</a>
|
| 2 |
|
| 3 |
+
A declaration [[dcl.dcl]] may (re)introduce one or more names and/or
|
| 4 |
+
entities into a translation unit. If so, the declaration specifies the
|
| 5 |
+
interpretation and semantic properties of these names. A declaration of
|
| 6 |
+
an entity or *typedef-name* X is a redeclaration of X if another
|
| 7 |
+
declaration of X is reachable from it [[module.reach]]. A declaration
|
| 8 |
+
may also have effects including:
|
| 9 |
|
| 10 |
- a static assertion [[dcl.pre]],
|
| 11 |
- controlling template instantiation [[temp.explicit]],
|
| 12 |
- guiding template argument deduction for constructors
|
| 13 |
[[temp.deduct.guide]],
|
|
|
|
| 20 |
- it declares a function without specifying the function’s body
|
| 21 |
[[dcl.fct.def]],
|
| 22 |
- it contains the `extern` specifier [[dcl.stc]] or a
|
| 23 |
*linkage-specification*[^1] [[dcl.link]] and neither an *initializer*
|
| 24 |
nor a *function-body*,
|
| 25 |
+
- it declares a non-inline static data member in a class definition
|
| 26 |
+
[[class.mem]], [[class.static]],
|
| 27 |
- it declares a static data member outside a class definition and the
|
| 28 |
variable was defined within the class with the `constexpr` specifier
|
| 29 |
(this usage is deprecated; see [[depr.static.constexpr]]),
|
| 30 |
+
- it is an *elaborated-type-specifier* [[class.name]],
|
| 31 |
- it is an *opaque-enum-declaration* [[dcl.enum]],
|
| 32 |
- it is a *template-parameter* [[temp.param]],
|
| 33 |
- it is a *parameter-declaration* [[dcl.fct]] in a function declarator
|
| 34 |
that is not the *declarator* of a *function-definition*,
|
| 35 |
- it is a `typedef` declaration [[dcl.typedef]],
|
|
|
|
| 131 |
|
| 132 |
[*Note 2*: A class name can also be implicitly declared by an
|
| 133 |
*elaborated-type-specifier* [[dcl.type.elab]]. — *end note*]
|
| 134 |
|
| 135 |
In the definition of an object, the type of that object shall not be an
|
| 136 |
+
incomplete type [[term.incomplete.type]], an abstract class type
|
| 137 |
+
[[class.abstract]], or a (possibly multidimensional) array thereof.
|
| 138 |
|