tmp/tmp3xwdt7jq/{from.md → to.md}
RENAMED
|
@@ -1,15 +1,15 @@
|
|
| 1 |
### Structure of each clause <a id="structure">[[structure]]</a>
|
| 2 |
|
| 3 |
#### Elements <a id="structure.elements">[[structure.elements]]</a>
|
| 4 |
|
| 5 |
-
Each library clause contains the following elements, as applicable:[^
|
| 6 |
|
| 7 |
- Summary
|
| 8 |
- Requirements
|
| 9 |
- Detailed specifications
|
| 10 |
-
- References to the
|
| 11 |
|
| 12 |
#### Summary <a id="structure.summary">[[structure.summary]]</a>
|
| 13 |
|
| 14 |
The Summary provides a synopsis of the category, and introduces the
|
| 15 |
first-level subclauses. Each subclause also provides a summary, listing
|
|
@@ -43,12 +43,12 @@ The string and iostream components use an explicit representation of
|
|
| 43 |
operations required of template arguments. They use a class template
|
| 44 |
`char_traits` to define these constraints.
|
| 45 |
|
| 46 |
Interface convention requirements are stated as generally as possible.
|
| 47 |
Instead of stating “class X has to define a member function
|
| 48 |
-
`operator++()`
|
| 49 |
-
`X`, `++x` is defined
|
| 50 |
unspecified.
|
| 51 |
|
| 52 |
Requirements are stated in terms of well-defined expressions that define
|
| 53 |
valid terms of the types that satisfy the requirements. For every set of
|
| 54 |
well-defined expression requirements there is a table that specifies an
|
|
@@ -61,34 +61,34 @@ Template argument requirements are sometimes referenced by name. See
|
|
| 61 |
[[type.descriptions]].
|
| 62 |
|
| 63 |
In some cases the semantic requirements are presented as C++code. Such
|
| 64 |
code is intended as a specification of equivalence of a construct to
|
| 65 |
another construct, not necessarily as the way the construct must be
|
| 66 |
-
implemented.[^
|
| 67 |
|
| 68 |
#### Detailed specifications <a id="structure.specifications">[[structure.specifications]]</a>
|
| 69 |
|
| 70 |
The detailed specifications each contain the following elements:
|
| 71 |
|
| 72 |
- name and brief description
|
| 73 |
-
- synopsis (class definition or function
|
| 74 |
- restrictions on template arguments, if any
|
| 75 |
- description of class invariants
|
| 76 |
- description of function semantics
|
| 77 |
|
| 78 |
Descriptions of class member functions follow the order (as
|
| 79 |
-
appropriate):[^
|
| 80 |
|
| 81 |
- constructor(s) and destructor
|
| 82 |
- copying, moving & assignment functions
|
| 83 |
- comparison functions
|
| 84 |
- modifier functions
|
| 85 |
- observer functions
|
| 86 |
- operators and other non-member functions
|
| 87 |
|
| 88 |
Descriptions of function semantics contain the following elements (as
|
| 89 |
-
appropriate):[^
|
| 90 |
|
| 91 |
- *Requires:* the preconditions for calling the function
|
| 92 |
- *Effects:* the actions performed by the function
|
| 93 |
- *Synchronization:* the synchronization operations (
|
| 94 |
[[intro.multithread]]) applicable to the function
|
|
@@ -97,24 +97,23 @@ appropriate):[^5]
|
|
| 97 |
- *Throws:* any exceptions thrown by the function, and the conditions
|
| 98 |
that would cause the exception
|
| 99 |
- *Complexity:* the time and/or space complexity of the function
|
| 100 |
- *Remarks:* additional semantic constraints on the function
|
| 101 |
- *Error conditions:* the error conditions for error codes reported by
|
| 102 |
-
the function
|
| 103 |
-
- *Notes:* non-normative comments about the function
|
| 104 |
|
| 105 |
Whenever the *Effects:* element specifies that the semantics of some
|
| 106 |
function `F` are *Equivalent to* some code sequence, then the various
|
| 107 |
elements are interpreted as follows. If `F`’s semantics specifies a
|
| 108 |
*Requires:* element, then that requirement is logically imposed prior to
|
| 109 |
the *equivalent-to* semantics. Next, the semantics of the code sequence
|
| 110 |
-
are determined by the *Requires:* , *Effects:* , *
|
| 111 |
-
*
|
| 112 |
-
|
| 113 |
contained in the code sequence. The value returned from `F` is specified
|
| 114 |
by `F`’s *Returns:* element, or if `F` has no *Returns:* element, a
|
| 115 |
-
non-`void` return from `F` is specified by the
|
| 116 |
the code sequence. If `F`’s semantics contains a *Throws:* ,
|
| 117 |
*Postconditions:* , or *Complexity:* element, then that supersedes any
|
| 118 |
occurrences of that element in the code sequence.
|
| 119 |
|
| 120 |
For non-reserved replacement and handler functions, Clause
|
|
@@ -125,11 +124,11 @@ describes a function definition provided by the implementation. The
|
|
| 125 |
provided by either the implementation or a C++program. Where no
|
| 126 |
distinction is explicitly made in the description, the behavior
|
| 127 |
described is the required behavior.
|
| 128 |
|
| 129 |
If the formulation of a complexity requirement calls for a negative
|
| 130 |
-
number of operations, the actual requirement is zero operations.[^
|
| 131 |
|
| 132 |
Complexity requirements specified in the library clauses are upper
|
| 133 |
bounds, and implementations that provide better complexity guarantees
|
| 134 |
satisfy the requirements.
|
| 135 |
|
|
@@ -138,8 +137,7 @@ conditions are listed, together with a suitable explanation, as the
|
|
| 138 |
`enum class errc` constants ([[syserr]]).
|
| 139 |
|
| 140 |
#### C library <a id="structure.see.also">[[structure.see.also]]</a>
|
| 141 |
|
| 142 |
Paragraphs labeled “” contain cross-references to the relevant portions
|
| 143 |
-
of this International Standard and the ISO C standard
|
| 144 |
-
incorporated into this International Standard by reference.
|
| 145 |
|
|
|
|
| 1 |
### Structure of each clause <a id="structure">[[structure]]</a>
|
| 2 |
|
| 3 |
#### Elements <a id="structure.elements">[[structure.elements]]</a>
|
| 4 |
|
| 5 |
+
Each library clause contains the following elements, as applicable:[^1]
|
| 6 |
|
| 7 |
- Summary
|
| 8 |
- Requirements
|
| 9 |
- Detailed specifications
|
| 10 |
+
- References to the C standard library
|
| 11 |
|
| 12 |
#### Summary <a id="structure.summary">[[structure.summary]]</a>
|
| 13 |
|
| 14 |
The Summary provides a synopsis of the category, and introduces the
|
| 15 |
first-level subclauses. Each subclause also provides a summary, listing
|
|
|
|
| 43 |
operations required of template arguments. They use a class template
|
| 44 |
`char_traits` to define these constraints.
|
| 45 |
|
| 46 |
Interface convention requirements are stated as generally as possible.
|
| 47 |
Instead of stating “class X has to define a member function
|
| 48 |
+
`operator++()`”, the interface requires “for any object `x` of class
|
| 49 |
+
`X`, `++x` is defined”. That is, whether the operator is a member is
|
| 50 |
unspecified.
|
| 51 |
|
| 52 |
Requirements are stated in terms of well-defined expressions that define
|
| 53 |
valid terms of the types that satisfy the requirements. For every set of
|
| 54 |
well-defined expression requirements there is a table that specifies an
|
|
|
|
| 61 |
[[type.descriptions]].
|
| 62 |
|
| 63 |
In some cases the semantic requirements are presented as C++code. Such
|
| 64 |
code is intended as a specification of equivalence of a construct to
|
| 65 |
another construct, not necessarily as the way the construct must be
|
| 66 |
+
implemented.[^2]
|
| 67 |
|
| 68 |
#### Detailed specifications <a id="structure.specifications">[[structure.specifications]]</a>
|
| 69 |
|
| 70 |
The detailed specifications each contain the following elements:
|
| 71 |
|
| 72 |
- name and brief description
|
| 73 |
+
- synopsis (class definition or function declaration, as appropriate)
|
| 74 |
- restrictions on template arguments, if any
|
| 75 |
- description of class invariants
|
| 76 |
- description of function semantics
|
| 77 |
|
| 78 |
Descriptions of class member functions follow the order (as
|
| 79 |
+
appropriate):[^3]
|
| 80 |
|
| 81 |
- constructor(s) and destructor
|
| 82 |
- copying, moving & assignment functions
|
| 83 |
- comparison functions
|
| 84 |
- modifier functions
|
| 85 |
- observer functions
|
| 86 |
- operators and other non-member functions
|
| 87 |
|
| 88 |
Descriptions of function semantics contain the following elements (as
|
| 89 |
+
appropriate):[^4]
|
| 90 |
|
| 91 |
- *Requires:* the preconditions for calling the function
|
| 92 |
- *Effects:* the actions performed by the function
|
| 93 |
- *Synchronization:* the synchronization operations (
|
| 94 |
[[intro.multithread]]) applicable to the function
|
|
|
|
| 97 |
- *Throws:* any exceptions thrown by the function, and the conditions
|
| 98 |
that would cause the exception
|
| 99 |
- *Complexity:* the time and/or space complexity of the function
|
| 100 |
- *Remarks:* additional semantic constraints on the function
|
| 101 |
- *Error conditions:* the error conditions for error codes reported by
|
| 102 |
+
the function
|
|
|
|
| 103 |
|
| 104 |
Whenever the *Effects:* element specifies that the semantics of some
|
| 105 |
function `F` are *Equivalent to* some code sequence, then the various
|
| 106 |
elements are interpreted as follows. If `F`’s semantics specifies a
|
| 107 |
*Requires:* element, then that requirement is logically imposed prior to
|
| 108 |
the *equivalent-to* semantics. Next, the semantics of the code sequence
|
| 109 |
+
are determined by the *Requires:* , *Effects:* , *Synchronization:* ,
|
| 110 |
+
*Postconditions:* , *Returns:* , *Throws:* , *Complexity:* , *Remarks:*
|
| 111 |
+
, and *Error conditions:* specified for the function invocations
|
| 112 |
contained in the code sequence. The value returned from `F` is specified
|
| 113 |
by `F`’s *Returns:* element, or if `F` has no *Returns:* element, a
|
| 114 |
+
non-`void` return from `F` is specified by the `return` statements in
|
| 115 |
the code sequence. If `F`’s semantics contains a *Throws:* ,
|
| 116 |
*Postconditions:* , or *Complexity:* element, then that supersedes any
|
| 117 |
occurrences of that element in the code sequence.
|
| 118 |
|
| 119 |
For non-reserved replacement and handler functions, Clause
|
|
|
|
| 124 |
provided by either the implementation or a C++program. Where no
|
| 125 |
distinction is explicitly made in the description, the behavior
|
| 126 |
described is the required behavior.
|
| 127 |
|
| 128 |
If the formulation of a complexity requirement calls for a negative
|
| 129 |
+
number of operations, the actual requirement is zero operations.[^5]
|
| 130 |
|
| 131 |
Complexity requirements specified in the library clauses are upper
|
| 132 |
bounds, and implementations that provide better complexity guarantees
|
| 133 |
satisfy the requirements.
|
| 134 |
|
|
|
|
| 137 |
`enum class errc` constants ([[syserr]]).
|
| 138 |
|
| 139 |
#### C library <a id="structure.see.also">[[structure.see.also]]</a>
|
| 140 |
|
| 141 |
Paragraphs labeled “” contain cross-references to the relevant portions
|
| 142 |
+
of this International Standard and the ISO C standard.
|
|
|
|
| 143 |
|