From Jason Turner

[customization.point.object]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmptafn9zw9/{from.md → to.md} +35 -0
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
+