如果我有這樣的標準佈局類型:聯盟是標準佈局類型嗎?
struct sl_t
{
int a;
};
和工會這樣的:
union un_t
{
int b;
double q;
};
我可以投的,並使用工會與結構類型?也就是說,我可以假設聯盟本身是一種標準佈局類型,並且數據在內存開始時是一致的嗎?
un_t obj;
sl_t * s = reinterpret_cast<sl_t*>(&obj);
s->a = 15;
assert(obj.b == 15);
或者我必須把聯合變量&obj.b
的地址?
請注意,我已經意識到,如果我存儲結構中的工會內部的C++ 11標準保證我可以訪問兩個sl_t ::和un_t :: B,指的是9.5-1。
但是......是不是'&obj.b'都短,更安全嗎?我很好奇你的動機。 –
我仍然需要圍繞它的reinterpret_cast。我主要好奇,但我確實有一個情況,它可以方便地依靠這個。 –