当下面的错误出现时,我正在编译下面的代码.我无法找到原因.
typedef union {
struct {
const int j;
} tag;
} X;
int main(){
return 0;
}
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)error: member `<`anonymous union>::`<`anonymous struct> `<`anonymous union>::tag with copy assignment operator not allowed in union
这段代码用gcc编译罚款.仅使用g ++给出错误.
为了有一些类类型的工会成员T,T的特殊成员函数(默认构造函数,拷贝构造函数,拷贝赋值操作符和析构函数)必须是微不足道的.也就是说,它们必须是编译器隐式声明和定义的那些.
你的未命名结构没有一个简单的复制赋值运算符(事实上,它根本没有一个),因为它有一个const-qualified 的成员变量,它禁止生成隐式声明的复制赋值运算符.