该 IDL到C ++ 语言映射说明了关于联合的默认初始化的以下内容
默认的union构造函数不执行union的应用程序可见初始化。它不初始化鉴别器,也不会将任何联合成员初始化为对应用程序有用的状态。 (默认构造函数的实现可以执行它想要的任何类型的初始化,但是这种初始化是依赖于实现的。没有兼容的应用程序可以依靠单独的默认构造函数正确初始化的联合。)
因此,构建默认的初始化主题实例并在线路上发送它是不安全的。
就像参考一样 IDL到C ++ 11 语言映射说明如下
默认的union构造函数初始化union。如果指定了默认情况,则会将union初始化为此默认情况。如果联合具有隐式默认成员,则将其初始化为该情况。在所有其他情况下,它被初始化为空。分配,复制,移动和销毁默认构建的联合是安全的。