From Jason Turner

[namespace.constraints]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmp_xic6on2/{from.md → to.md} +13 -2
tmp/tmp_xic6on2/{from.md → to.md} RENAMED
@@ -6,20 +6,21 @@ The behavior of a C++program is undefined if it adds declarations or
6
  definitions to namespace `std` or to a namespace within namespace `std`
7
  unless otherwise specified. A program may add a template specialization
8
  for any standard library template to namespace `std` only if the
9
  declaration depends on a user-defined type and the specialization meets
10
  the standard library requirements for the original template and is not
11
- explicitly prohibited.[^22]
12
 
13
  The behavior of a C++program is undefined if it declares
14
 
15
  - an explicit specialization of any member function of a standard
16
  library class template, or
17
  - an explicit specialization of any member function template of a
18
  standard library class or class template, or
19
  - an explicit or partial specialization of any member class template of
20
- a standard library class or class template.
 
21
 
22
  A program may explicitly instantiate a template defined in the standard
23
  library only if the declaration depends on the name of a user-defined
24
  type and the instantiation meets the standard library requirements for
25
  the original template.
@@ -32,5 +33,15 @@ namespace ([[namespace.def]]).
32
  The behavior of a C++program is undefined if it adds declarations or
33
  definitions to namespace `posix` or to a namespace within namespace
34
  `posix` unless otherwise specified. The namespace `posix` is reserved
35
  for use by ISO/IEC 9945 and other POSIX standards.
36
 
 
 
 
 
 
 
 
 
 
 
 
6
  definitions to namespace `std` or to a namespace within namespace `std`
7
  unless otherwise specified. A program may add a template specialization
8
  for any standard library template to namespace `std` only if the
9
  declaration depends on a user-defined type and the specialization meets
10
  the standard library requirements for the original template and is not
11
+ explicitly prohibited.[^21]
12
 
13
  The behavior of a C++program is undefined if it declares
14
 
15
  - an explicit specialization of any member function of a standard
16
  library class template, or
17
  - an explicit specialization of any member function template of a
18
  standard library class or class template, or
19
  - an explicit or partial specialization of any member class template of
20
+ a standard library class or class template, or
21
+ - a deduction guide for any standard library class template.
22
 
23
  A program may explicitly instantiate a template defined in the standard
24
  library only if the declaration depends on the name of a user-defined
25
  type and the instantiation meets the standard library requirements for
26
  the original template.
 
33
  The behavior of a C++program is undefined if it adds declarations or
34
  definitions to namespace `posix` or to a namespace within namespace
35
  `posix` unless otherwise specified. The namespace `posix` is reserved
36
  for use by ISO/IEC 9945 and other POSIX standards.
37
 
38
+ ##### Namespaces for future standardization <a id="namespace.future">[[namespace.future]]</a>
39
+
40
+ Top level namespaces with a name starting with `std` and followed by a
41
+ non-empty sequence of digits are reserved for future standardization.
42
+ The behavior of a C++program is undefined if it adds declarations or
43
+ definitions to such a namespace.
44
+
45
+ [*Example 1*: The top level namespace `std2` is reserved for use by
46
+ future revisions of this International Standard. — *end example*]
47
+