From Jason Turner

[intro.compliance.general]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpjy04nujp/{from.md → to.md} +76 -0
tmp/tmpjy04nujp/{from.md → to.md} RENAMED
@@ -0,0 +1,76 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ### General <a id="intro.compliance.general">[[intro.compliance.general]]</a>
2
+
3
+ The set of *diagnosable rules* consists of all syntactic and semantic
4
+ rules in this document except for those rules containing an explicit
5
+ notation that “no diagnostic is required” or which are described as
6
+ resulting in “undefined behavior”.
7
+
8
+ Although this document states only requirements on C++ implementations,
9
+ those requirements are often easier to understand if they are phrased as
10
+ requirements on programs, parts of programs, or execution of programs.
11
+ Such requirements have the following meaning:
12
+
13
+ - If a program contains no violations of the rules in [[lex]] through
14
+ [[thread]] and [[depr]], a conforming implementation shall, within its
15
+ resource limits as described in [[implimits]], accept and correctly
16
+ execute[^3] that program.
17
+ - If a program contains a violation of a rule for which no diagnostic is
18
+ required, this document places no requirement on implementations with
19
+ respect to that program.
20
+ - Otherwise, if a program contains a violation of any diagnosable rule
21
+ or an occurrence of a construct described in this document as
22
+ “conditionally-supported” when the implementation does not support
23
+ that construct, a conforming implementation shall issue at least one
24
+ diagnostic message.
25
+
26
+ [*Note 1*: During template argument deduction and substitution, certain
27
+ constructs that in other contexts require a diagnostic are treated
28
+ differently; see  [[temp.deduct]]. — *end note*]
29
+
30
+ Furthermore, a conforming implementation
31
+
32
+ - shall not accept a preprocessing translation unit containing a
33
+ `#error` preprocessing directive [[cpp.error]],
34
+ - shall issue at least one diagnostic message for each `#warning` or
35
+ `#error` preprocessing directive not following a `#error`
36
+ preprocessing directive in a preprocessing translation unit, and
37
+ - shall not accept a translation unit with a *static_assert-declaration*
38
+ that fails [[dcl.pre]].
39
+
40
+ For classes and class templates, the library Clauses specify partial
41
+ definitions. Private members [[class.access]] are not specified, but
42
+ each implementation shall supply them to complete the definitions
43
+ according to the description in the library Clauses.
44
+
45
+ For functions, function templates, objects, and values, the library
46
+ Clauses specify declarations. Implementations shall supply definitions
47
+ consistent with the descriptions in the library Clauses.
48
+
49
+ A C++ translation unit [[lex.phases]] obtains access to the names
50
+ defined in the library by including the appropriate standard library
51
+ header or importing the appropriate standard library named header unit
52
+ [[using.headers]].
53
+
54
+ The templates, classes, functions, and objects in the library have
55
+ external linkage [[basic.link]]. The implementation provides definitions
56
+ for standard library entities, as necessary, while combining translation
57
+ units to form a complete C++ program [[lex.phases]].
58
+
59
+ Two kinds of implementations are defined: a *hosted implementation* and
60
+ a *freestanding implementation*. A freestanding implementation is one in
61
+ which execution may take place without the benefit of an operating
62
+ system. A hosted implementation supports all the facilities described in
63
+ this document, while a freestanding implementation supports the entire
64
+ C++ language described in [[lex]] through [[cpp]] and the subset of the
65
+ library facilities described in [[compliance]].
66
+
67
+ A conforming implementation may have extensions (including additional
68
+ library functions), provided they do not alter the behavior of any
69
+ well-formed program. Implementations are required to diagnose programs
70
+ that use such extensions that are ill-formed according to this document.
71
+ Having done so, however, they can compile and execute such programs.
72
+
73
+ Each implementation shall include documentation that identifies all
74
+ conditionally-supported constructs that it does not support and defines
75
+ all locale-specific characteristics.[^4]
76
+