¿Está definido sizeof (bool)?

No puedo encontrar una respuesta en la documentación estándar. ¿ sizeof(bool) siempre es de 1 byte, o está definida su implementación?

Su implementación está definida, y el estándar pone énfasis notable en dejar eso en claro.

§5.3.3 / 1, abreviado:

sizeof(char) , sizeof(signed char) y sizeof(unsigned char) son 1; el resultado del sizeof aplicado a cualquier otro tipo fundamental está definido por la implementación. [Nota: en particular, sizeof(bool) y sizeof(wchar_t) están definidos por la implementación. 69) ]

Nota al pie 69):

sizeof(bool) no es necesario que sea 1.

http://msdn.microsoft.com/en-us/library/tf4dy80a.aspx

“En Visual C ++ 4.2, los archivos de encabezado C ++ estándar contenían un typedef que equiparaba bool con int. En Visual C ++ 5.0 y posterior, bool se implementa como un tipo incorporado con un tamaño de 1 byte. Eso significa que para Visual C ++ 4.2, una llamada de sizeof (bool) produce 4, mientras que en Visual C ++ 5.0 y posterior, la misma llamada produce 1. Esto puede causar problemas de corrupción de memoria si ha definido miembros de estructura de tipo bool en Visual C ++ 4.2 y están mezclando objeto archivos (OBJ) y / o DLL construidos con los comstackdores 4.2 y 5.0 o posteriores “.

Su implementación está definida. Solo sizeof(char) es 1 por el estándar.

Ver 5.3.3 párrafo 1:

[Nota: en particular, sizeof (bool) y sizeof (wchar_t) están definidos por la implementación.69)]