#include <iostream>
#include <type_traits>
template <typename T>
typename std::enable_if<std::is_pod<T>::value>::type* FeedFace(T& v)
{
static const unsigned char MAGIC[] = { 0xFE, 0xED, 0xFA, 0xCE };
unsigned char *me = reinterpret_cast<unsigned char *>(&v);
for( size_t ii = 0; ii < sizeof(T)/sizeof(unsigned char); ++ii )
me[ii] = MAGIC[ii % sizeof(MAGIC)/sizeof(unsigned char)];
}
struct Pod { char data[37]; };
struct NonPod : Pod { virtual ~NonPod() { } };
int main()
{
Pod pod;
FeedFace(pod);
NonPod nonpod;
FeedFace(nonpod);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dHlwZV90cmFpdHM+Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcG9kPFQ+Ojp2YWx1ZT46OnR5cGUqIEZlZWRGYWNlKFQmIHYpCnsKICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIE1BR0lDW10gPSB7IDB4RkUsIDB4RUQsIDB4RkEsIDB4Q0UgfTsKICAgIHVuc2lnbmVkIGNoYXIgKm1lID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyICo+KCZ2KTsKICAgIGZvciggc2l6ZV90IGlpID0gMDsgaWkgPCBzaXplb2YoVCkvc2l6ZW9mKHVuc2lnbmVkIGNoYXIpOyArK2lpICkgCiAgICAgICAgbWVbaWldID0gTUFHSUNbaWkgJSBzaXplb2YoTUFHSUMpL3NpemVvZih1bnNpZ25lZCBjaGFyKV07Cn0KCnN0cnVjdCBQb2QgeyBjaGFyIGRhdGFbMzddOyB9OwpzdHJ1Y3QgIE5vblBvZCA6IFBvZCB7IHZpcnR1YWwgfk5vblBvZCgpIHsgfSB9OwoKaW50IG1haW4oKQp7CiAgICBQb2QgcG9kOwogICAgRmVlZEZhY2UocG9kKTsKCiAgICBOb25Qb2Qgbm9ucG9kOwogICAgRmVlZEZhY2Uobm9ucG9kKTsKCiAgICByZXR1cm4gMDsKfQo=