#include <iostream>
#include <cstring>
void doIt(void *p)
{
double d;
std::memcpy(&d, &p, sizeof(double));
std::cout << "After: " << d << std::endl;
}
int main() {
static_assert(sizeof(void*) >= sizeof(double), "void* is not large enough!");
double d = 123.45;
std::cout << "Before: " << d << std::endl;
void *p = nullptr;
std::memcpy(&p, &d, sizeof(double));
doIt(p);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0cmluZz4KCnZvaWQgZG9JdCh2b2lkICpwKQp7CiAgICBkb3VibGUgZDsKICAgIHN0ZDo6bWVtY3B5KCZkLCAmcCwgc2l6ZW9mKGRvdWJsZSkpOwogICAgc3RkOjpjb3V0IDw8ICJBZnRlcjogIiA8PCBkIDw8IHN0ZDo6ZW5kbDsKfQoKaW50IG1haW4oKSB7CiAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZih2b2lkKikgPj0gc2l6ZW9mKGRvdWJsZSksICJ2b2lkKiBpcyBub3QgbGFyZ2UgZW5vdWdoISIpOwogICAgZG91YmxlIGQgPSAxMjMuNDU7CiAgICBzdGQ6OmNvdXQgPDwgIkJlZm9yZTogIiA8PCBkIDw8IHN0ZDo6ZW5kbDsKICAgIHZvaWQgKnAgPSBudWxscHRyOwogICAgc3RkOjptZW1jcHkoJnAsICZkLCBzaXplb2YoZG91YmxlKSk7CiAgICBkb0l0KHApOwogICAgcmV0dXJuIDA7Cn0=