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