From Jason Turner

[namespace.constraints]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpnql_f4ce/{from.md → to.md} +6 -13
tmp/tmpnql_f4ce/{from.md → to.md} RENAMED
@@ -15,10 +15,14 @@ library requirements for the original template.[^21]
15
  The behavior of a C++ program is undefined if it declares an explicit or
16
  partial specialization of any standard library variable template, except
17
  where explicitly permitted by the specification of that variable
18
  template.
19
 
 
 
 
 
20
  The behavior of a C++ program is undefined if it declares
21
 
22
  - an explicit specialization of any member function of a standard
23
  library class template, or
24
  - an explicit specialization of any member function template of a
@@ -37,41 +41,30 @@ standard library static member function, or an instantiation of a
37
  standard library function template. Unless `F` is designated an
38
  *addressable function*, the behavior of a C++ program is unspecified
39
  (possibly ill-formed) if it explicitly or implicitly attempts to form a
40
  pointer to `F`.
41
 
42
- [*Note 1*: Possible means of forming such pointers include application
43
  of the unary `&` operator [[expr.unary.op]], `addressof`
44
  [[specialized.addressof]], or a function-to-pointer standard conversion
45
  [[conv.func]]. — *end note*]
46
 
47
  Moreover, the behavior of a C++ program is unspecified (possibly
48
  ill-formed) if it attempts to form a reference to `F` or if it attempts
49
  to form a pointer-to-member designating either a standard library
50
  non-static member function [[member.functions]] or an instantiation of a
51
  standard library member function template.
52
 
53
- Other than in namespace `std` or in a namespace within namespace `std`,
54
- a program may provide an overload for any library function template
55
- designated as a *customization point*, provided that (a) the overload’s
56
- declaration depends on at least one user-defined type and (b) the
57
- overload meets the standard library requirements for the customization
58
- point. [^22]
59
-
60
- [*Note 2*: This permits a (qualified or unqualified) call to the
61
- customization point to invoke the most appropriate overload for the
62
- given arguments. — *end note*]
63
-
64
  A translation unit shall not declare namespace `std` to be an inline
65
  namespace [[namespace.def]].
66
 
67
  ##### Namespace `posix` <a id="namespace.posix">[[namespace.posix]]</a>
68
 
69
  The behavior of a C++ program is undefined if it adds declarations or
70
  definitions to namespace `posix` or to a namespace within namespace
71
  `posix` unless otherwise specified. The namespace `posix` is reserved
72
- for use by ISO/IEC 9945 and other POSIX standards.
73
 
74
  ##### Namespaces for future standardization <a id="namespace.future">[[namespace.future]]</a>
75
 
76
  Top-level namespaces whose *namespace-name* consists of `std` followed
77
  by one or more *digit*s [[lex.name]] are reserved for future
 
15
  The behavior of a C++ program is undefined if it declares an explicit or
16
  partial specialization of any standard library variable template, except
17
  where explicitly permitted by the specification of that variable
18
  template.
19
 
20
+ [*Note 1*: The requirements on an explicit or partial specialization
21
+ are stated by each variable template that grants such
22
+ permission. — *end note*]
23
+
24
  The behavior of a C++ program is undefined if it declares
25
 
26
  - an explicit specialization of any member function of a standard
27
  library class template, or
28
  - an explicit specialization of any member function template of a
 
41
  standard library function template. Unless `F` is designated an
42
  *addressable function*, the behavior of a C++ program is unspecified
43
  (possibly ill-formed) if it explicitly or implicitly attempts to form a
44
  pointer to `F`.
45
 
46
+ [*Note 2*: Possible means of forming such pointers include application
47
  of the unary `&` operator [[expr.unary.op]], `addressof`
48
  [[specialized.addressof]], or a function-to-pointer standard conversion
49
  [[conv.func]]. — *end note*]
50
 
51
  Moreover, the behavior of a C++ program is unspecified (possibly
52
  ill-formed) if it attempts to form a reference to `F` or if it attempts
53
  to form a pointer-to-member designating either a standard library
54
  non-static member function [[member.functions]] or an instantiation of a
55
  standard library member function template.
56
 
 
 
 
 
 
 
 
 
 
 
 
57
  A translation unit shall not declare namespace `std` to be an inline
58
  namespace [[namespace.def]].
59
 
60
  ##### Namespace `posix` <a id="namespace.posix">[[namespace.posix]]</a>
61
 
62
  The behavior of a C++ program is undefined if it adds declarations or
63
  definitions to namespace `posix` or to a namespace within namespace
64
  `posix` unless otherwise specified. The namespace `posix` is reserved
65
+ for use by ISO/IEC/IEEE 9945 and other POSIX standards.
66
 
67
  ##### Namespaces for future standardization <a id="namespace.future">[[namespace.future]]</a>
68
 
69
  Top-level namespaces whose *namespace-name* consists of `std` followed
70
  by one or more *digit*s [[lex.name]] are reserved for future