http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46862
--- Comment #2 from Janis Johnson <janis at gcc dot gnu.org> 2010-12-09 18:42:13 UTC --- TYPE_TRANSPARENT_AGGR is set in begin_class_definition in semantics.c for the classes std::decimal::decimal{32|64|128}. It assumes that they are defined as in the GNU Standard C++ Library. That code should probably ICE with a good message if there is no first field or if the first field doesn't have an expected type. If that sounds appropriate I can write a patch. The C++ compiler would have to know details of other implementations of the decimal classes in order to pass them as the underlying scalar types.