The reason why the minimum size of a variable is 1 byte it has to do with the way computers access memory. There is no way of reserving just a single bit of memory for a variable. You might say memory is accessed with a "resolution" of eight bits (or one byte).
I believe even the one bit boolean created using a bit field as mentioned by Bazzy would require a complete byte to store.
A bit field is an std::vector<bool>. It is a specialization of vector designed to optimize memory utilization. Every element in a bit field uses exactly 1 bit. The capacity of a bit field can only grow in multiples of 8, though.