Owned<void> AllocateDynamicNew(const TypeInfo& type, ConstructorT&& constructor) { // Allocate memory and construct object auto buffer = static_cast<byte*>(std::malloc(type.get_size())); constructor(buffer); // Create deleter for object auto deleter = [](void* value, const TypeInfo* t) { t->get_destructor()(value); std::free(value); }; return Owned<void>::Create(buffer, &type, deleter); }