错误:联合中不允许使用复制赋值运算符

dee*_*eeJ 5 c++ struct unions

当下面的错误出现时,我正在编译下面的代码.我无法找到原因.

typedef union  {
   struct {
     const  int j;
   } tag;
} X;


int main(){
    return 0;
}
Run Code Online (Sandbox Code Playgroud)
error: member `<`anonymous union>::`<`anonymous struct> `<`anonymous union>::tag with copy assignment operator not allowed in union
Run Code Online (Sandbox Code Playgroud)

这段代码用gcc编译罚款.仅使用g ++给出错误.

Jam*_*lis 6

为了有一些类类型的工会成员T,T的特殊成员函数(默认构造函数,拷贝构造函数,拷贝赋值操作符和析构函数)必须是微不足道的.也就是说,它们必须是编译器隐式声明和定义的那些.

你的未命名结构没有一个简单的复制赋值运算符(事实上,它根本没有一个),因为它有一个const-qualified 的成员变量,它禁止生成隐式声明的复制赋值运算符.