#include struct Large { size_t x; char filler[512 - sizeof(size_t)] = {}; Large(size_t x) : x(x) {} }; void* forward_raw(void* p); std::unique_ptr forward_unique(std::unique_ptr&& p); std::shared_ptr forward_shared(std::shared_ptr&& p); std::unique_ptr forward_unique_large(std::unique_ptr&& p); std::shared_ptr forward_shared_large(std::shared_ptr&& p);