在这种情况下,工会成员的成员会调用自己的析构函数吗?

Will the members of a union member call their own destructors in this scenario?

带有空 dtor 的 class 是否会在联合内显式调用它自己的 dtor 时将其称为成员的 dtor?

这有点难以表达,希望伪代码更直接。在此示例中,Texture::~Texture() 会隐式调用 source.bitmap.pixels.~vector() 吗?

struct Bitmap{
    ~Bitmap(){} // empty dtor

    // members
    std::vector<uint8> pixels;  // <-- will this dealloc when ~Bitmap() is called manually?
};

struct Texture{
    ~Texture(){
        // assume sourceType is 1
        switch(sourceType){ 
        case 1:
            source.bitmap.~Bitmap();
            break;
        }
    }

    // members
    uint sourceType;
    union Source{
        Source(){}
        ~Source(){}

        // members
        Bitmap bitmap;
    }source;
};

析构函数的执行定义为执行析构函数的主体,然后还执行对成员和基类的析构函数的调用。伪析构函数调用执行析构函数。

所以是的,在这种情况下,伪析构函数调用将正确销毁 pixels

是的,它会隐式调用所有成员的析构函数,如果你的 class 是从另一个 class 派生的,它也会调用基础 class 的析构函数。