#define Tmpl inline \
template<typename O,typename R> R
Tmpl byte_cast(O obj) {
static_assert(sizeof(O)==sizeof(R));
return *(R*)(unsigned long long)(&obj);
}
Tmpl force_cast(O obj) {
static_assert(sizeof(O)>=sizeof(R));
return *(R*)(unsigned long long)(&obj);
}
Tmpl unsafe_cast(O obj) {
return *(R*)(unsigned long long)(&obj);
}
#undef Tmpl