This function group manufactures delegate-like objects which selectively
contain a context or function pointer. This allows avoiding the overhead
of an indirect call (which prevents inlining), or passing around a context
when that context is already available on the caller's side, all while
having the same syntax for invocation. The invocation syntax is as follows:
If fun is the return value of these functions, and Fun is its type,
Fun.call(fun, args...) will invoke the respective function.
Unbound variants provide a callWith method, which additionally take a
context to rebind with.
Unbound delegate alias.
Return value contains nothing (empty struct).
Example construction: unboundDgAlias!method
This function group manufactures delegate-like objects which selectively contain a context or function pointer. This allows avoiding the overhead of an indirect call (which prevents inlining), or passing around a context when that context is already available on the caller's side, all while having the same syntax for invocation. The invocation syntax is as follows: If fun is the return value of these functions, and Fun is its type, Fun.call(fun, args...) will invoke the respective function. Unbound variants provide a callWith method, which additionally take a context to rebind with. Unbound delegate alias. Return value contains nothing (empty struct). Example construction: unboundDgAlias!method