So what this means is that you can return a value by value if that value can fit in a variable sizeof(LRESULT) bytes long: LRESULT CALLBACK WndProc (...) { ... case WM_CREATE: static_assert(sizeof(float) == sizeof(LRESULT)); float const retval = 1.1; return *reinterpret_cast<...