#include #include #include #include struct Free { void operator()(void* p) const noexcept { std::free(p); } }; struct Record { int value; explicit Record(int n) noexcept : value(n) {} ~Record() noexcept {} }; int main() { std::unique_ptr storage(std::malloc(sizeof(Record))); if (!storage) throw std::bad_alloc(); Record* record = ::new (storage.get()) Record(42); assert(record->value == 42); record->~Record(); }