Merge (the dagger of copy) Δ†:A×A→A, (a,b)↦a⊓b. The right adjoint of the diagonal; the value that IsMeetAsRightAdjoint certifies as the glb.
More...
|
|
using | Domain = std::pair<A, A> |
|
using | Codomain = A |
|
| constexpr A | operator() (const Domain &p) const |
| | Fold the copied pair through the injected glb Δ†(a,b)=a⊓b.
|
template<typename A, typename
Meet>
struct dedekind::category::Merge< A, Meet >
Merge (the dagger of copy) Δ†:A×A→A, (a,b)↦a⊓b. The right adjoint of the diagonal; the value that IsMeetAsRightAdjoint certifies as the glb.
- Template Parameters
-
| A | the carrier object. |
| Meet | the glb, injected: the order-algebra's meet, exactly as reduce<Term,Ord,Combine> injects it. No default and no :species dependency, so this partition does not reach into the :species value-op catalogue; the merge is whatever glb the caller supplies. |
◆ operator()()
template<typename A, typename
Meet>
Fold the copied pair through the injected glb Δ†(a,b)=a⊓b.
- Parameters
-
| p | the pair (a,b) to merge. |
- Returns
Meet{}(a,b), the injected order-algebra meet.
- Note
- The
requires clause probes Meet on the call so an ill-formed injected op (a Meet with no operator()(A,A)) removes operator() from the overload set. IsArrow then fails for that Merge, so IsMerge rejects it at the concept surface rather than only at a later call site (#946 review).
The documentation for this struct was generated from the following file: