. Ale bool zwykle się odnosi do wartości true lub false, a nie 0 lub 1. Więc nie jestem pewien, czy to jest napisane zgodnie ze standardami.
Standardami rozsądku czy standardami C ?
Bo to rozbieżne. W żadnym innym rozsądnym języku z funkcji bool nie mógłbyś zwrócić wyrażenia int/unsigned return x & 1;
Czym się motywujesz do tak postawionego zadania ?
Koszt czy ortodoksyjność zapisu ?
Najmniejsza jednostką adresowalną jest bajt, i nie ma mniej kosztownych operacji ani w sensie RAM, ani CPU *)
(może na jakiś skrajnie małych mikrokontrolerach jest inna konwecnja wywołania/returnu, przypuszczenie).
Na ortodoksyjny bit pomocna by była struktura bitowa, ale to może być bardziej kosztowne.
C/C++ nie ma, ale są/były języki, które miały zawężenia typów np integerowych, np (chyba) w Pascalu dało by się stworzyć nowy typ integerowy 0..1
(oczywiście implementowany w bajcie czy słowie, cudów nie ma)
Języki posiadają enum'y, dobre do wyrażania tak małych zbiorów wartości, ale w C/C++ znów to jest spieprzone bo kompatybilne z integerem. Jak mawiał Kuraś, jak się nie ruszysz d. z tyłu.
*)
na współczesnych super-duper-procesorach bajt jak masz pecha może dawać większe koszty CPU niż słowo.