14template<
typename Method,
typename Storage,
typename T>
17template<
typename Tag,
typename Storage,
typename R, concepts::RemoveCVRefSameAs<This> Self,
typename... BArgs,
20 constexpr static auto call(
void* storage, BArgs... bargs) -> R {
24 "Cannot create a vtable function for T not storable in Storage.");
26 "Cannot create a vtable function because the Method is not callable for T.");
28 auto const tag =
Tag {};
31 auto* typed_storage =
static_cast<QualifiedStorage*
>(storage);
32 auto*
object = typed_storage->template down_cast<meta::RemoveReference<T>>();
Definition any_storable.h:11
Definition method_callable_with.h:23
Definition tag_invoke.h:45
constexpr auto invoke_r
Definition invoke.h:103
di::meta::Decay< decltype(T)> Tag
Definition tag_invoke.h:28
constexpr auto forward_like(U &&value) -> decltype(auto)
Definition forward_like.h:8
constexpr tag_invoke_detail::TagInvokeFn tag_invoke
Definition tag_invoke.h:22
Definition erased_call.h:15
static constexpr auto call(void *storage, BArgs... bargs) -> R
Definition erased_call.h:20