C++ 在并集内具有'initializer\u list'构造函数的结构?
我有一个结构是POD,但为了方便起见,我希望它有std::initializer\u list ctor。默认ctor、复制ctor和dtor是隐式的。但是,使用初始值设定项\u list ctor似乎会取消结构作为POD的资格,因此它不能位于联合内部:C++ 在并集内具有'initializer\u list'构造函数的结构?,c++,c++11,initializer-list,unions,C++,C++11,Initializer List,Unions,我有一个结构是POD,但为了方便起见,我希望它有std::initializer\u list ctor。默认ctor、复制ctor和dtor是隐式的。但是,使用初始值设定项\u list ctor似乎会取消结构作为POD的资格,因此它不能位于联合内部: #include<initializer_list> struct A{ A(const std::initializer_list<int>&); }; union{ A a; } a; gcc
#include<initializer_list>
struct A{
A(const std::initializer_list<int>&);
};
union{
A a;
} a;
gcc 4.6-标准=c++0x:
error: use of deleted function ‘<anonymous union>::._0()’
error: ‘<anonymous union>::._0()’ is implicitly deleted because the default definition would be ill-formed:
error: no matching function for call to ‘A::A()’
它周围有什么东西吗?它与c++11的无限制联合功能有关吗?联合本身必须有一个显式的ctor,这要归功于:
这个联合构造函数也应该初始化一个,所以它,像一个,没有默认的构造函数
union _u{
A a;
_u(){};
} a;