struct S1 { union T; };
struct S2 { T t; };
とすると(ちょっと古いg++ですが)

sizeof(T) == 8
sizeof(S1) == 1
sizeof(S2) == 8
となることが分かりました.

いろいろと腑に落ちない部分がありますが触れてはいけないようなので別の方法を試みることにしました.レスくれた方ありがとうございます.