C++ Logo

SG10

Advanced search

Subject: [SG10] Example for __cpp_lib_byte
From: Jonathan Wakely (cxx_at_[hidden])
Date: 2017-10-20 12:46:59


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.


SG10 list run by herb.sutter at gmail.com