in Source/Shared/arcana/functional/inplace_function.h [379:400]
static void call(void* dataPtr, const void* fromPtr, Operation op)
{
FunctorT* thisFunctor = reinterpret_cast<FunctorT*>(dataPtr);
switch (op)
{
case Operation::Destroy:
{
thisFunctor->~FunctorT();
break;
}
case Operation::Move:
{
FunctorT* source = (FunctorT*)fromPtr;
new (thisFunctor) FunctorT(std::move(*source));
break;
}
default:
{
assert(false && "Unexpected operation");
}
}
}