工会不是我经常使用的东西,在这里查看了一些关于它们的其他问题之后,似乎几乎总是有某种警告,它们可能不起作用。例如。结构可能具有意外的填充或字节序差异。
在我正在使用的数学库中遇到了这个问题,我想知道它是否完全安全。我假设多维数组没有任何额外的填充,并且由于两个定义的类型相同,它们保证占用完全相同的内存量?
template<typename T> class Matrix44T
{
...
union
{
T M[16];
T m[4][4];
} m;
};
这种设置有什么缺点吗?定义的顺序会对它的工作方式产生什么影响吗?