私が以下を持っているとしましょうstruct
:
struct A
{
unsigned int a : 1;
unsigned int b : 1;
};
私が興味を持っているのは表現のタイプですa + b
。技術的には、ビットフィールドにはサイズが小さい「タイプ」がありますが、int
おそらく整数の昇格が発生するはずであり、結果はint
たまたまgccとclangにあるようです。
しかし、ビットフィールド自体の正確なタイプを抽出することは不可能であり、常にその「大きな」タイプ (つまりunsigned int
、この場合) であると推定されるため、整数昇格が発生するのは正しいでしょうか? ビットフィールドの正確な型とそのサイズについて実際に話すことはできないため、unsigned int
整数昇格が発生しないように推測される場合を除きます。
(繰り返しになりますが、私の質問は、MSVC がたまたまそれunsigned int
がそのような表現のタイプであると考えているという事実から生じています)