@zygoloid Suppose you have 1 KiB of memory. You ordinarily can use it to store no more than 1024 values of a std::int8_t.Supposing we have a new data type, std::intnegative8_t, we can e.g. store 1024 of those in our memory, along with 2048 values of type std::int8_t. We have doubled how many signed bytes we can store in a fixed size block of memory, at the relatively minor cost of allocating a few additional data items as overhead.