La respuesta de Charles Bailey es correcta. La redacción exacta del estándar C ++ es (§4.7 / 4): "Si el tipo de fuente es bool, el valor falso se convierte a cero y el valor verdadero se convierte en uno".
Editar: Veo que también agregó la referencia; lo eliminaré en breve, si no me distraigo y olvido ...
Edit2: Por otra parte, probablemente valga la pena señalar que, si bien los valores booleanos en sí mismos siempre se convierten en cero o uno, una serie de funciones (especialmente de la biblioteca estándar de C) devuelven valores que son "básicamente booleanos", pero representados como ints que son normalmente solo se requiere que sea cero para indicar falso o distinto de cero para indicar verdadero. Por ejemplo, las funciones is * en <ctype.h>solo requieren cero o distinto de cero, no necesariamente cero o uno.
Si lanza eso a bool, cero se convertirá en falso y lo que no sea de cero en verdadero (como era de esperar).