標準のドキュメントに答えが見つかりません。 C++言語標準では、sizeof(bool)
が常に1(1バイト)である必要がありますか、またはこのサイズは実装定義ですか?
sizeof(bool)
は実装定義であり、標準はこの事実に特に重点を置いています。
§5.3.3/ 1、要約:
sizeof(char)
、sizeof(signed char)
、およびsizeof(unsigned char)
は1です。他の基本型に適用されるsizeof
の結果は実装定義です。 [注:特に、sizeof(bool)
およびsizeof(wchar_t)
は実装定義です。69)]
脚注69):
sizeof(bool)
は1である必要はありません。
http://msdn.Microsoft.com/en-us/library/tf4dy80a.aspx
「Visual C++ 4.2では、標準C++ヘッダーファイルにboolとintを同等にするtypedefが含まれていました。VisualC++ 5.0以降では、boolは1バイトのサイズの組み込み型として実装されています。 C++ 4.2、sizeof(bool)の呼び出しは4を返しますが、Visual C++ 5.0以降では、同じ呼び出しは1を返します。VisualC++ 4.2でbool型の構造体メンバーを定義し、オブジェクトを混合している場合4.2および5.0以降のコンパイラでビルドされたファイル(OBJ)および/またはDLL。
定義された実装です。 sizeof(char)
のみが1
標準により。
5.3.3パラグラフ1を参照してください。
[注:特に、sizeof(bool)とsizeof(wchar_t)は実装定義です69)]