I can't comment on the validity of that (despite doing similar aliasing in other places ), but I can suggest that the struct itself test for std::is_trivially_copyable via a std::static_assert.
static_assert(std::is_trivially_copyable::value, "'Bytes' requires trivially-copyable types");
unsigned char bytes[sizeof(stype)];
Hu. I didnt know you could do a static assert inside a union/struct etc. :| Neat, i always love it when i learn something new. Now i only wish i could change the compiler warning regarding non-trivially_copyable types. Saying e.g. the destructor is deleted is unfortunately uninformative if you dont know unions.
Back to topic: Too bad. I will have to remove the comment now.