tmp/tmplh3a_odm/{from.md → to.md}
RENAMED
|
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#### Fold expanded constraint <a id="temp.constr.fold">[[temp.constr.fold]]</a>
|
| 2 |
+
|
| 3 |
+
A *fold expanded constraint* is formed from a constraint C and a
|
| 4 |
+
*fold-operator* which can either be `&&` or `||`. A fold expanded
|
| 5 |
+
constraint is a pack expansion [[temp.variadic]]. Let N be the number of
|
| 6 |
+
elements in the pack expansion parameters [[temp.variadic]].
|
| 7 |
+
|
| 8 |
+
A fold expanded constraint whose *fold-operator* is `&&` is satisfied if
|
| 9 |
+
it is a valid pack expansion and if N = 0 or if for each i where
|
| 10 |
+
0 ≤ i < N in increasing order, C is satisfied when replacing each pack
|
| 11 |
+
expansion parameter with the corresponding iᵗʰ element. No substitution
|
| 12 |
+
takes place for any i greater than the smallest i for which the
|
| 13 |
+
constraint is not satisfied.
|
| 14 |
+
|
| 15 |
+
A fold expanded constraint whose *fold-operator* is `||` is satisfied if
|
| 16 |
+
it is a valid pack expansion, N > 0, and if for i where 0 ≤ i < N in
|
| 17 |
+
increasing order, there is a smallest i for which C is satisfied when
|
| 18 |
+
replacing each pack expansion parameter with the corresponding iᵗʰ
|
| 19 |
+
element. No substitution takes place for any i greater than the smallest
|
| 20 |
+
i for which the constraint is satisfied.
|
| 21 |
+
|
| 22 |
+
[*Note 1*: If the pack expansion expands packs of different size, then
|
| 23 |
+
it is invalid and the fold expanded constraint is not
|
| 24 |
+
satisfied. — *end note*]
|
| 25 |
+
|
| 26 |
+
Two fold expanded constraints are *compatible for subsumption* if their
|
| 27 |
+
respective constraints both contain an equivalent unexpanded pack
|
| 28 |
+
[[temp.over.link]].
|
| 29 |
+
|