#include <iostream>
struct Header {
std::size_t datasize;
int typecode;
};
template <typename T>
struct Payload {
Header header;
T offset[1];
void* data () {
return &offset[0];
}
};
typedef unsigned char byte;
const static auto null = nullptr;
int main () {
byte* data = new byte[sizeof(int) * 200 + sizeof(Header)];
Payload<int>* payload = (Payload<int>*)data;
int* properdatastart = (int*)payload->data();
delete data;
data = null;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IEhlYWRlciB7CiAgICAgc3RkOjpzaXplX3QgZGF0YXNpemU7CiAgICAgaW50IHR5cGVjb2RlOwp9OwoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CnN0cnVjdCBQYXlsb2FkIHsKICAgIEhlYWRlciBoZWFkZXI7CiAgICBUIG9mZnNldFsxXTsKICAgIAogICAgdm9pZCogZGF0YSAoKSB7CiAgICAgICAgcmV0dXJuICZvZmZzZXRbMF07CiAgICB9Cn07Cgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgYnl0ZTsKY29uc3Qgc3RhdGljIGF1dG8gbnVsbCA9IG51bGxwdHI7CgppbnQgbWFpbiAoKSB7CiAgICAKICAgIGJ5dGUqIGRhdGEgPSBuZXcgYnl0ZVtzaXplb2YoaW50KSAqIDIwMCArIHNpemVvZihIZWFkZXIpXTsKICAgIFBheWxvYWQ8aW50PiogcGF5bG9hZCA9IChQYXlsb2FkPGludD4qKWRhdGE7CiAgICBpbnQqIHByb3BlcmRhdGFzdGFydCA9IChpbnQqKXBheWxvYWQtPmRhdGEoKTsKICAgIAogICAgCiAgICBkZWxldGUgZGF0YTsKICAgIGRhdGEgPSBudWxsOwogICAgcmV0dXJuIDA7Cn0=