char, unsigned char, and std::byte (C++17) are the only //byte types// according to the C++ Standard.
//byte type// means a type that can be used to observe an object's value representation.
We use `uint8_t` everywhere to see bytes, so we have to ensure that `uint8_t` is an alias to a `byte type`.
References:
http://eel.is/c++draft/basic.types
http://eel.is/c++draft/basic.memobj#def:byte
http://eel.is/c++draft/expr.sizeof#1
http://eel.is/c++draft/cstdint#syn