From the C++ Standard, section 9.5:
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,
Here, for "non-trivial" read "useful" :-)