如何为联合的成员提供简单的类构造函数

How to provide a trivial class constructors for members of a union?

本文关键字:简单 构造函数 成员      更新时间:2023-10-16

如何提供一个将构造函数作为联合的一部分的类?

我读到过,任何具有平凡构造函数的类都可以成为联合的一部分。特别是c++0x,我认为联合应该是不受限制的。为什么这个float4班不适合?我该怎么做呢?

struct float4
{
    union
    {
        struct { float z, y, x, w; };
        float v[4];
        __m128 xmm;
    };
    inline float4() { }
    inline float4(float x, float y, float z, float w) :
        xmm(_mm_setr_ps(z, y, x, w)) { }
};
struct float44
{
    union
    {
        float v[16];
        __m128 xmm[4];
        struct { __m128 xmm1, xmm2, xmm3, xmm4; };
        struct { float4 row1, row2, row3, row4; };
    };
};

VC2010还没有实现c++ 0x规范的这一部分。