やべ、本当に>>355の要求した文法通りだ。
この発想はなかった。

でもunionってこんなことできるのかなと調べてみたら、やっぱり規格違反だった。
unionのメンバにクラスは使えるんだけど……。

>An object of a class with a non-trivial constructor (12.1), a non-trivial copy constructor (12.8), a non-trivial destructor
>(12.4), or a non-trivial copy assignment operator (13.5.3, 12.8) cannot be a member of a union, nor can an
>array of such objects.

というか、union自体がメンバ関数とか、コンストラクタやデストラクタ持てたんだ。
規格読んで今初めて知ったよ。