sizeof gives you the size of a type relative to sizeof(char). That doesn't mean a char is 1 byte long (although it usually is). The only thing the standard says is that char is at least 8 bits long.
That doesn't mean a char is 1 byte long (although it usually is).
I do believe that sizeof(char) is guaranteed to be 1 because it will always be one byte. However what C++ considers to be a byte may change (but will always be at least 8 bits).
So a char may be larger than 8 bits, but will not be larger than a byte.