[SG10] Example for __cpp_lib_byte

Jonathan Wakely cxx at kayari.org
Fri Oct 20 19:46:59 CEST 2017


Would something like this be suitable?

#if __cpp_lib_byte >= 201603
  using byte_type = std::byte;
#else
  using byte_type = unsigned char;
#endif
  alignas(T) byte_type rawbytes[sizeof(T)];
  // ...

Both forms will work, but the std::byte version might be preferred to
ensure that no arithmetic operations are accidentally performed on the
values. The desired type-safety would only be enforced on
implementations that support std::byte, but if the rest of the code is
the same you can be fairly confident there's no arithmetic even when
the type is unsigned char.


More information about the Features mailing list