Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在并集内具有'initializer\u list'构造函数的结构?_C++_C++11_Initializer List_Unions - Fatal编程技术网

C++ 在并集内具有'initializer\u list'构造函数的结构?

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

我有一个结构是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 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;