tmp/tmptafn9zw9/{from.md → to.md}
RENAMED
|
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
##### Customization Point Object types <a id="customization.point.object">[[customization.point.object]]</a>
|
| 2 |
+
|
| 3 |
+
A *customization point object* is a function object [[function.objects]]
|
| 4 |
+
with a literal class type that interacts with program-defined types
|
| 5 |
+
while enforcing semantic requirements on that interaction.
|
| 6 |
+
|
| 7 |
+
The type of a customization point object, ignoring cv-qualifiers, shall
|
| 8 |
+
model `semiregular` [[concepts.object]].
|
| 9 |
+
|
| 10 |
+
All instances of a specific customization point object type shall be
|
| 11 |
+
equal [[concepts.equality]].
|
| 12 |
+
|
| 13 |
+
The type `T` of a customization point object shall model
|
| 14 |
+
`invocable<const T&, Args...>` [[concept.invocable]] when the types in
|
| 15 |
+
`Args...` meet the requirements specified in that customization point
|
| 16 |
+
object’s definition. When the types of `Args...` do not meet the
|
| 17 |
+
customization point object’s requirements, `T` shall not have a function
|
| 18 |
+
call operator that participates in overload resolution.
|
| 19 |
+
|
| 20 |
+
Each customization point object type constrains its return type to model
|
| 21 |
+
a particular concept.
|
| 22 |
+
|
| 23 |
+
[*Note 1*: Many of the customization point objects in the library
|
| 24 |
+
evaluate function call expressions with an unqualified name which
|
| 25 |
+
results in a call to a program-defined function found by argument
|
| 26 |
+
dependent name lookup [[basic.lookup.argdep]]. To preclude such an
|
| 27 |
+
expression resulting in a call to unconstrained functions with the same
|
| 28 |
+
name in namespace `std`, customization point objects specify that lookup
|
| 29 |
+
for these expressions is performed in a context that includes deleted
|
| 30 |
+
overloads matching the signatures of overloads defined in namespace
|
| 31 |
+
`std`. When the deleted overloads are viable, program-defined overloads
|
| 32 |
+
need be more specialized [[temp.func.order]] or more constrained
|
| 33 |
+
[[temp.constr.order]] to be used by a customization point
|
| 34 |
+
object. — *end note*]
|
| 35 |
+
|