tmp/tmp996zaz49/{from.md → to.md}
RENAMED
|
@@ -4,13 +4,16 @@ Unless otherwise specified, the behavior of a C++ program is undefined
|
|
| 4 |
if it adds declarations or definitions to namespace `std` or to a
|
| 5 |
namespace within namespace `std`.
|
| 6 |
|
| 7 |
Unless explicitly prohibited, a program may add a template
|
| 8 |
specialization for any standard library class template to namespace
|
| 9 |
-
`std` provided that
|
| 10 |
-
|
| 11 |
-
|
|
|
|
|
|
|
|
|
|
| 12 |
|
| 13 |
The behavior of a C++ program is undefined if it declares an explicit or
|
| 14 |
partial specialization of any standard library variable template, except
|
| 15 |
where explicitly permitted by the specification of that variable
|
| 16 |
template.
|
|
@@ -28,13 +31,15 @@ The behavior of a C++ program is undefined if it declares
|
|
| 28 |
- an explicit or partial specialization of any member class template of
|
| 29 |
a standard library class or class template, or
|
| 30 |
- a deduction guide for any standard library class template.
|
| 31 |
|
| 32 |
A program may explicitly instantiate a class template defined in the
|
| 33 |
-
standard library only if the declaration
|
| 34 |
-
|
| 35 |
-
|
|
|
|
|
|
|
| 36 |
|
| 37 |
Let `F` denote a standard library function [[global.functions]], a
|
| 38 |
standard library static member function, or an instantiation of a
|
| 39 |
standard library function template. Unless `F` is designated an
|
| 40 |
*addressable function*, the behavior of a C++ program is unspecified
|
|
@@ -50,8 +55,22 @@ Moreover, the behavior of a C++ program is unspecified (possibly
|
|
| 50 |
ill-formed) if it attempts to form a reference to `F` or if it attempts
|
| 51 |
to form a pointer-to-member designating either a standard library
|
| 52 |
non-static member function [[member.functions]] or an instantiation of a
|
| 53 |
standard library member function template.
|
| 54 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 55 |
A translation unit shall not declare namespace `std` to be an inline
|
| 56 |
namespace [[namespace.def]].
|
| 57 |
|
|
|
|
| 4 |
if it adds declarations or definitions to namespace `std` or to a
|
| 5 |
namespace within namespace `std`.
|
| 6 |
|
| 7 |
Unless explicitly prohibited, a program may add a template
|
| 8 |
specialization for any standard library class template to namespace
|
| 9 |
+
`std` provided that
|
| 10 |
+
|
| 11 |
+
- the added declaration depends on at least one program-defined type,
|
| 12 |
+
and
|
| 13 |
+
- the specialization meets the standard library requirements for the
|
| 14 |
+
original template.[^21]
|
| 15 |
|
| 16 |
The behavior of a C++ program is undefined if it declares an explicit or
|
| 17 |
partial specialization of any standard library variable template, except
|
| 18 |
where explicitly permitted by the specification of that variable
|
| 19 |
template.
|
|
|
|
| 31 |
- an explicit or partial specialization of any member class template of
|
| 32 |
a standard library class or class template, or
|
| 33 |
- a deduction guide for any standard library class template.
|
| 34 |
|
| 35 |
A program may explicitly instantiate a class template defined in the
|
| 36 |
+
standard library only if the declaration
|
| 37 |
+
|
| 38 |
+
- depends on the name of at least one program-defined type, and
|
| 39 |
+
- the instantiation meets the standard library requirements for the
|
| 40 |
+
original template.
|
| 41 |
|
| 42 |
Let `F` denote a standard library function [[global.functions]], a
|
| 43 |
standard library static member function, or an instantiation of a
|
| 44 |
standard library function template. Unless `F` is designated an
|
| 45 |
*addressable function*, the behavior of a C++ program is unspecified
|
|
|
|
| 55 |
ill-formed) if it attempts to form a reference to `F` or if it attempts
|
| 56 |
to form a pointer-to-member designating either a standard library
|
| 57 |
non-static member function [[member.functions]] or an instantiation of a
|
| 58 |
standard library member function template.
|
| 59 |
|
| 60 |
+
Let `F` denote a standard library function or function template. Unless
|
| 61 |
+
`F` is designated an addressable function, it is unspecified if or how a
|
| 62 |
+
reflection value designating the associated entity can be formed.
|
| 63 |
+
|
| 64 |
+
[*Note 3*: For example, it is possible that `std::meta::members_of`
|
| 65 |
+
will not return reflections of standard library functions that an
|
| 66 |
+
implementation handles through an extra-linguistic
|
| 67 |
+
mechanism. — *end note*]
|
| 68 |
+
|
| 69 |
+
Let `C` denote a standard library class or class template
|
| 70 |
+
specialization. It is unspecified if or how a reflection value can be
|
| 71 |
+
formed to any private member of `C`, or what the names of such members
|
| 72 |
+
may be.
|
| 73 |
+
|
| 74 |
A translation unit shall not declare namespace `std` to be an inline
|
| 75 |
namespace [[namespace.def]].
|
| 76 |
|