The implementation of discriminated union relies on std::invoke (i.e. without multi-dispatch) for the purpose of implementing invoke, which demonstrates that we should not try to add multi-dispatch to std::invoke. Basically invoke (with multi-dispatch) has proven to be higher level than std::invoke, hence the former name is wrong (or confusing, at least).
This implies that what we currently call invoke should be called something else, perhaps apply or a new function dispatch. This also applies to member functions.
The implementation of discriminated union relies on
std::invoke
(i.e. without multi-dispatch) for the purpose of implementinginvoke
, which demonstrates that we should not try to add multi-dispatch tostd::invoke
. Basicallyinvoke
(with multi-dispatch) has proven to be higher level thanstd::invoke
, hence the former name is wrong (or confusing, at least).This implies that what we currently call
invoke
should be called something else, perhapsapply
or a new functiondispatch
. This also applies to member functions.