A class extending from SenderObjectBase that wraps any Sender
checks that T is a Sender
calls connect on the Sender but stores the OperationState on the heap
Converts any Sender to a polymorphic SenderObject
A polymorphic sender of type T
A sender that delays before calling setValue
A sender that always calls setDone
A sender that always calls setError
Type-erased operational state object used in polymorphic senders
A sender that always sets an error
A Sender that sends a single value of type T
A sender that always calls setValue with no args
It is ok for the operation state to be on the heap, but if it is on the stack we need to ensure any copies are elided. We can't be 100% sure (the compiler may still blit), but this is the best we can do.